62 lines
2.1 KiB
Scala
62 lines
2.1 KiB
Scala
package gs.predicate.v0.kv
|
|
|
|
import cats.effect.IO
|
|
import cats.effect.std.MapRef
|
|
import gs.datagen.v0.Gen
|
|
import gs.datagen.v0.generators.Size
|
|
import gs.predicate.v0.api.Predicate
|
|
import support.IOSuite
|
|
|
|
class ValueNotEqualsTests extends IOSuite:
|
|
|
|
import ValueNotEqualsTests.Data
|
|
|
|
iotest("should NOT find an exact match against some value") {
|
|
ValueNotEqualsTests.newProvider(Data.KeyValues).flatMap { provider =>
|
|
given KeyValueProvider[IO] = provider
|
|
val p =
|
|
ValueNotEquals[IO](Data.ExistingKey, Data.ExistingValue)
|
|
for result <- p.eval()
|
|
yield assertEquals(result, Predicate.Result.missed())
|
|
}
|
|
}
|
|
|
|
iotest("should match a value if that value is not equal to the target") {
|
|
ValueNotEqualsTests.newProvider(Data.KeyValues).flatMap { provider =>
|
|
given KeyValueProvider[IO] = provider
|
|
val p =
|
|
ValueNotEquals[IO](
|
|
Data.ExistingKey,
|
|
Data.NotExistingValue
|
|
)
|
|
for result <- p.eval()
|
|
yield assertEquals(result, Predicate.Result.matched())
|
|
}
|
|
}
|
|
|
|
iotest("should not find a key that does not exist within some provider") {
|
|
ValueNotEqualsTests.newProvider(Data.KeyValues).flatMap { provider =>
|
|
given KeyValueProvider[IO] = provider
|
|
val p = ValueNotEquals[IO](Data.NotExistingKey, "")
|
|
for result <- p.eval()
|
|
yield assertEquals(result, Predicate.Result.missed())
|
|
}
|
|
}
|
|
|
|
object ValueNotEqualsTests:
|
|
|
|
object Data:
|
|
|
|
val ExistingKey: String = Gen.string.alphaNumeric(Size.Fixed(8)).gen()
|
|
val NotExistingKey: String = Gen.string.alphaNumeric(Size.Fixed(6)).gen()
|
|
val ExistingValue: String = Gen.string.alphaNumeric(Size.Fixed(10)).gen()
|
|
val NotExistingValue: String = Gen.string.alphaNumeric(Size.Fixed(4)).gen()
|
|
val KeyValues: Map[String, String] = Map(ExistingKey -> ExistingValue)
|
|
|
|
end Data
|
|
|
|
def newProvider(data: Map[String, String]): IO[KeyValueProvider[IO]] =
|
|
for map <- MapRef.ofSingleImmutableMap[IO, String, String](data)
|
|
yield new MemoryMapKeyValueProvider(map)
|
|
|
|
end ValueNotEqualsTests
|