blob: 907d440ea9fef16a9c2fa2b4fa37ed7a619b6cf9 [file] [log] [blame]
package assertions
import (
"fmt"
"time"
)
func (this *AssertionsFixture) TestShouldContainKey() {
this.fail(so(map[int]int{}, ShouldContainKey), "This assertion requires exactly 1 comparison values (you provided 0).")
this.fail(so(map[int]int{}, ShouldContainKey, 1, 2, 3), "This assertion requires exactly 1 comparison values (you provided 3).")
this.fail(so(Thing1{}, ShouldContainKey, 1), "You must provide a valid map type (was assertions.Thing1)!")
this.fail(so(nil, ShouldContainKey, 1), "You must provide a valid map type (was <nil>)!")
this.fail(so(map[int]int{1: 41}, ShouldContainKey, 2), "Expected the map[int]int to contain the key: [2] (but it didn't)!")
this.pass(so(map[int]int{1: 41}, ShouldContainKey, 1))
this.pass(so(map[int]int{1: 41, 2: 42, 3: 43}, ShouldContainKey, 2))
}
func (this *AssertionsFixture) TestShouldNotContainKey() {
this.fail(so(map[int]int{}, ShouldNotContainKey), "This assertion requires exactly 1 comparison values (you provided 0).")
this.fail(so(map[int]int{}, ShouldNotContainKey, 1, 2, 3), "This assertion requires exactly 1 comparison values (you provided 3).")
this.fail(so(Thing1{}, ShouldNotContainKey, 1), "You must provide a valid map type (was assertions.Thing1)!")
this.fail(so(nil, ShouldNotContainKey, 1), "You must provide a valid map type (was <nil>)!")
this.fail(so(map[int]int{1: 41}, ShouldNotContainKey, 1), "Expected the map[int]int NOT to contain the key: [1] (but it did)!")
this.pass(so(map[int]int{1: 41}, ShouldNotContainKey, 2))
}
func (this *AssertionsFixture) TestShouldContain() {
this.fail(so([]int{}, ShouldContain), "This assertion requires exactly 1 comparison values (you provided 0).")
this.fail(so([]int{}, ShouldContain, 1, 2, 3), "This assertion requires exactly 1 comparison values (you provided 3).")
this.fail(so(Thing1{}, ShouldContain, 1), "You must provide a valid container (was assertions.Thing1)!")
this.fail(so(nil, ShouldContain, 1), "You must provide a valid container (was <nil>)!")
this.fail(so([]int{1}, ShouldContain, 2), "Expected the container ([]int) to contain: '2' (but it didn't)!")
this.fail(so([][]int{{1}}, ShouldContain, []int{2}), "Expected the container ([][]int) to contain: '[2]' (but it didn't)!")
this.pass(so([]int{1}, ShouldContain, 1))
this.pass(so([]int{1, 2, 3}, ShouldContain, 2))
this.pass(so([][]int{{1}, {2}, {3}}, ShouldContain, []int{2}))
}
func (this *AssertionsFixture) TestShouldNotContain() {
this.fail(so([]int{}, ShouldNotContain), "This assertion requires exactly 1 comparison values (you provided 0).")
this.fail(so([]int{}, ShouldNotContain, 1, 2, 3), "This assertion requires exactly 1 comparison values (you provided 3).")
this.fail(so(Thing1{}, ShouldNotContain, 1), "You must provide a valid container (was assertions.Thing1)!")
this.fail(so(nil, ShouldNotContain, 1), "You must provide a valid container (was <nil>)!")
this.fail(so([]int{1}, ShouldNotContain, 1), "Expected the container ([]int) NOT to contain: '1' (but it did)!")
this.fail(so([]int{1, 2, 3}, ShouldNotContain, 2), "Expected the container ([]int) NOT to contain: '2' (but it did)!")
this.fail(so([][]int{{1}, {2}, {3}}, ShouldNotContain, []int{2}), "Expected the container ([][]int) NOT to contain: '[2]' (but it did)!")
this.pass(so([]int{1}, ShouldNotContain, 2))
this.pass(so([][]int{{1}, {2}, {3}}, ShouldNotContain, []int{4}))
}
func (this *AssertionsFixture) TestShouldBeIn() {
this.fail(so(4, ShouldBeIn), needNonEmptyCollection)
container := []int{1, 2, 3, 4}
this.pass(so(4, ShouldBeIn, container))
this.pass(so(4, ShouldBeIn, 1, 2, 3, 4))
this.pass(so([]int{4}, ShouldBeIn, [][]int{{1}, {2}, {3}, {4}}))
this.pass(so([]int{4}, ShouldBeIn, []int{1}, []int{2}, []int{3}, []int{4}))
this.fail(so(4, ShouldBeIn, 1, 2, 3), "Expected '4' to be in the container ([]interface {}), but it wasn't!")
this.fail(so(4, ShouldBeIn, []int{1, 2, 3}), "Expected '4' to be in the container ([]int), but it wasn't!")
this.fail(so([]int{4}, ShouldBeIn, []int{1}, []int{2}, []int{3}), "Expected '[4]' to be in the container ([]interface {}), but it wasn't!")
this.fail(so([]int{4}, ShouldBeIn, [][]int{{1}, {2}, {3}}), "Expected '[4]' to be in the container ([][]int), but it wasn't!")
}
func (this *AssertionsFixture) TestShouldNotBeIn() {
this.fail(so(4, ShouldNotBeIn), needNonEmptyCollection)
container := []int{1, 2, 3, 4}
this.pass(so(42, ShouldNotBeIn, container))
this.pass(so(42, ShouldNotBeIn, 1, 2, 3, 4))
this.pass(so([]int{42}, ShouldNotBeIn, []int{1}, []int{2}, []int{3}, []int{4}))
this.pass(so([]int{42}, ShouldNotBeIn, [][]int{{1}, {2}, {3}, {4}}))
this.fail(so(2, ShouldNotBeIn, 1, 2, 3), "Expected '2' NOT to be in the container ([]interface {}), but it was!")
this.fail(so(2, ShouldNotBeIn, []int{1, 2, 3}), "Expected '2' NOT to be in the container ([]int), but it was!")
this.fail(so([]int{2}, ShouldNotBeIn, []int{1}, []int{2}, []int{3}), "Expected '[2]' NOT to be in the container ([]interface {}), but it was!")
this.fail(so([]int{2}, ShouldNotBeIn, [][]int{{1}, {2}, {3}}), "Expected '[2]' NOT to be in the container ([][]int), but it was!")
}
func (this *AssertionsFixture) TestShouldBeEmpty() {
this.fail(so(1, ShouldBeEmpty, 2, 3), "This assertion requires exactly 0 comparison values (you provided 2).")
this.pass(so([]int{}, ShouldBeEmpty)) // empty slice
this.pass(so([][]int{}, ShouldBeEmpty)) // empty slice
this.pass(so([]interface{}{}, ShouldBeEmpty)) // empty slice
this.pass(so(map[string]int{}, ShouldBeEmpty)) // empty map
this.pass(so("", ShouldBeEmpty)) // empty string
this.pass(so(&[]int{}, ShouldBeEmpty)) // pointer to empty slice
this.pass(so(&[0]int{}, ShouldBeEmpty)) // pointer to empty array
this.pass(so(nil, ShouldBeEmpty)) // nil
this.pass(so(make(chan string), ShouldBeEmpty)) // empty channel
this.fail(so([]int{1}, ShouldBeEmpty), "Expected [1] to be empty (but it wasn't)!") // non-empty slice
this.fail(so([][]int{{1}}, ShouldBeEmpty), "Expected [[1]] to be empty (but it wasn't)!") // non-empty slice
this.fail(so([]interface{}{1}, ShouldBeEmpty), "Expected [1] to be empty (but it wasn't)!") // non-empty slice
this.fail(so(map[string]int{"hi": 0}, ShouldBeEmpty), "Expected map[hi:0] to be empty (but it wasn't)!") // non-empty map
this.fail(so("hi", ShouldBeEmpty), "Expected hi to be empty (but it wasn't)!") // non-empty string
this.fail(so(&[]int{1}, ShouldBeEmpty), "Expected &[1] to be empty (but it wasn't)!") // pointer to non-empty slice
this.fail(so(&[1]int{1}, ShouldBeEmpty), "Expected &[1] to be empty (but it wasn't)!") // pointer to non-empty array
c := make(chan int, 1) // non-empty channel
go func() { c <- 1 }()
time.Sleep(time.Millisecond)
this.fail(so(c, ShouldBeEmpty), fmt.Sprintf("Expected %+v to be empty (but it wasn't)!", c))
}
func (this *AssertionsFixture) TestShouldNotBeEmpty() {
this.fail(so(1, ShouldNotBeEmpty, 2, 3), "This assertion requires exactly 0 comparison values (you provided 2).")
this.fail(so([]int{}, ShouldNotBeEmpty), "Expected [] to NOT be empty (but it was)!") // empty slice
this.fail(so([]interface{}{}, ShouldNotBeEmpty), "Expected [] to NOT be empty (but it was)!") // empty slice
this.fail(so(map[string]int{}, ShouldNotBeEmpty), "Expected map[] to NOT be empty (but it was)!") // empty map
this.fail(so("", ShouldNotBeEmpty), "Expected to NOT be empty (but it was)!") // empty string
this.fail(so(&[]int{}, ShouldNotBeEmpty), "Expected &[] to NOT be empty (but it was)!") // pointer to empty slice
this.fail(so(&[0]int{}, ShouldNotBeEmpty), "Expected &[] to NOT be empty (but it was)!") // pointer to empty array
this.fail(so(nil, ShouldNotBeEmpty), "Expected <nil> to NOT be empty (but it was)!") // nil
c := make(chan int, 0) // non-empty channel
this.fail(so(c, ShouldNotBeEmpty), fmt.Sprintf("Expected %+v to NOT be empty (but it was)!", c)) // empty channel
this.pass(so([]int{1}, ShouldNotBeEmpty)) // non-empty slice
this.pass(so([]interface{}{1}, ShouldNotBeEmpty)) // non-empty slice
this.pass(so(map[string]int{"hi": 0}, ShouldNotBeEmpty)) // non-empty map
this.pass(so("hi", ShouldNotBeEmpty)) // non-empty string
this.pass(so(&[]int{1}, ShouldNotBeEmpty)) // pointer to non-empty slice
this.pass(so(&[1]int{1}, ShouldNotBeEmpty)) // pointer to non-empty array
c = make(chan int, 1)
go func() { c <- 1 }()
time.Sleep(time.Millisecond)
this.pass(so(c, ShouldNotBeEmpty))
}
func (this *AssertionsFixture) TestShouldHaveLength() {
this.fail(so(1, ShouldHaveLength, 2), "You must provide a valid container (was int)!")
this.fail(so(nil, ShouldHaveLength, 1), "You must provide a valid container (was <nil>)!")
this.fail(so("hi", ShouldHaveLength, float64(1.0)), "You must provide a valid integer (was float64)!")
this.fail(so([]string{}, ShouldHaveLength), "This assertion requires exactly 1 comparison values (you provided 0).")
this.fail(so([]string{}, ShouldHaveLength, 1, 2), "This assertion requires exactly 1 comparison values (you provided 2).")
this.fail(so([]string{}, ShouldHaveLength, -10), "You must provide a valid positive integer (was -10)!")
this.fail(so([]int{}, ShouldHaveLength, 1), // empty slice
"Expected collection to have length equal to [1], but its length was [0] instead! contents: []")
this.fail(so([]interface{}{}, ShouldHaveLength, 1), // empty slice
"Expected collection to have length equal to [1], but its length was [0] instead! contents: []")
this.fail(so(map[string]int{}, ShouldHaveLength, 1), // empty map
"Expected collection to have length equal to [1], but its length was [0] instead! contents: map[]")
this.fail(so("", ShouldHaveLength, 1), // empty string
"Expected collection to have length equal to [1], but its length was [0] instead! contents: ")
this.fail(so(&[]int{}, ShouldHaveLength, 1), // pointer to empty slice
"Expected collection to have length equal to [1], but its length was [0] instead! contents: &[]")
this.fail(so(&[0]int{}, ShouldHaveLength, 1), // pointer to empty array
"Expected collection to have length equal to [1], but its length was [0] instead! contents: &[]")
c := make(chan int, 0) // non-empty channel
this.fail(so(c, ShouldHaveLength, 1), fmt.Sprintf(
"Expected collection to have length equal to [1], but its length was [0] instead! contents: %+v", c))
c = make(chan int) // empty channel
this.fail(so(c, ShouldHaveLength, 1), fmt.Sprintf(
"Expected collection to have length equal to [1], but its length was [0] instead! contents: %+v", c))
this.pass(so([]int{1}, ShouldHaveLength, 1)) // non-empty slice
this.pass(so([]interface{}{1}, ShouldHaveLength, 1)) // non-empty slice
this.pass(so(map[string]int{"hi": 0}, ShouldHaveLength, 1)) // non-empty map
this.pass(so("hi", ShouldHaveLength, 2)) // non-empty string
this.pass(so(&[]int{1}, ShouldHaveLength, 1)) // pointer to non-empty slice
this.pass(so(&[1]int{1}, ShouldHaveLength, 1)) // pointer to non-empty array
c = make(chan int, 1)
go func() { c <- 1 }()
time.Sleep(time.Millisecond)
this.pass(so(c, ShouldHaveLength, 1))
this.pass(so(c, ShouldHaveLength, uint(1)))
}