82 lines
2.5 KiB
Scala
82 lines
2.5 KiB
Scala
package gs.predicate.v0.api
|
|
|
|
import Predicate.Result
|
|
import gs.predicate.v0.api.Predicate.Result.allMatch
|
|
import munit.FunSuite
|
|
|
|
class PredicateResultTests extends FunSuite:
|
|
|
|
test("should represent matched and missed") {
|
|
val r1 = Result.matched()
|
|
val r2 = Result.missed()
|
|
assertEquals(r1.unwrap(), true)
|
|
assertEquals(r1.isMatch, true)
|
|
assertEquals(r1.isMiss, false)
|
|
assertEquals(r2.unwrap(), false)
|
|
assertEquals(r2.isMatch, false)
|
|
assertEquals(r2.isMiss, true)
|
|
}
|
|
|
|
test("should instantiate given some Boolean value") {
|
|
val r1 = Result(true)
|
|
val r2 = Result(false)
|
|
assertEquals(r1.unwrap(), true)
|
|
assertEquals(r1.isMatch, true)
|
|
assertEquals(r1.isMiss, false)
|
|
assertEquals(r2.unwrap(), false)
|
|
assertEquals(r2.isMatch, false)
|
|
assertEquals(r2.isMiss, true)
|
|
}
|
|
|
|
test("should support logical AND") {
|
|
val r1 = Result.matched()
|
|
val r2 = Result.missed()
|
|
val r3 = Result.matched()
|
|
val r4 = Result.matched()
|
|
val r5 = Result.missed()
|
|
assertEquals(r1.and(r3).and(r4), Result.matched())
|
|
assertEquals(r1.and(r2).and(r4), Result.missed())
|
|
assertEquals(r5.and(r1).and(r4), Result.missed())
|
|
}
|
|
|
|
test("should support logical OR") {
|
|
val r1 = Result.matched()
|
|
val r2 = Result.missed()
|
|
val r3 = Result.matched()
|
|
val r4 = Result.matched()
|
|
val r5 = Result.missed()
|
|
assertEquals(r1.or(r3).or(r4), Result.matched())
|
|
assertEquals(r1.or(r2).or(r4), Result.matched())
|
|
assertEquals(r5.or(r1).or(r4), Result.matched())
|
|
assertEquals(r2.or(r5), Result.missed())
|
|
}
|
|
|
|
test("should support all (true if all results are true)") {
|
|
val r1 = Result.matched()
|
|
val r2 = Result.missed()
|
|
val r3 = Result.matched()
|
|
val r4 = Result.matched()
|
|
val r5 = Result.missed()
|
|
val l1 = List(r1, r3, r4)
|
|
val l2 = List(r1, r2, r3, r4, r5)
|
|
val l3 = List()
|
|
assertEquals(l1.allMatch(), Result.matched())
|
|
assertEquals(l2.allMatch(), Result.missed())
|
|
assertEquals(l3.allMatch(), Result.missed())
|
|
}
|
|
|
|
test("should support any (true if any results are true)") {
|
|
val r1 = Result.matched()
|
|
val r2 = Result.missed()
|
|
val r3 = Result.matched()
|
|
val r4 = Result.matched()
|
|
val r5 = Result.missed()
|
|
val l1 = List(r1, r3, r4)
|
|
val l2 = List(r1, r2, r3, r4, r5)
|
|
val l3 = List(r2, r5)
|
|
val l4 = List.empty[Result]
|
|
assertEquals(l1.anyMatch(), Result.matched())
|
|
assertEquals(l2.anyMatch(), Result.matched())
|
|
assertEquals(l3.anyMatch(), Result.missed())
|
|
assertEquals(l4.anyMatch(), Result.missed())
|
|
}
|