I am using nimble in unit test expectation mapping and having a question about comparing structs.
What i am observing is that the matched .to(be(x)) does not work at all with structs. So this following unit test fails:
func someTest() {
struct Struct {
let a: String
let b: String
}
let structure = Struct(a: "a", b: "b")
expect(structure).to(be(structure))
}
Does this mean that the copy on write mechanism kicks in here and we are looking on 2 copies? Why is that test failing?
The
be()function actually callsbeIdenticalTo, which uses pointer equality checking, so it only works for reference types. See the BeIdenticalTo source code.You should make
Structconform toEquatableand useequalinstead.