Best Kotest code snippet using io.kotest.property.arbitrary.filter.sample
ParseProperty.kt
Source:ParseProperty.kt
...113 arbitrary(listOf(Codepoint('a'.code))) { rs ->114 val printableChars = (' '.code..'~'.code).asSequence()115 val codepoints = printableChars.map { Codepoint(it) }.toList()116 val ints = Arb.int(codepoints.indices)117 codepoints[ints.sample(rs).value]118 }119fun Arb.Companion.printableMultilinesIndentedAscii(): Arb<Codepoint> =120 arbitrary(listOf(Codepoint('a'.code))) { rs ->121 val indentings = sequenceOf(0xB)122 val endOfLines = sequenceOf(0xA, 0xD)123 val printableChars = (' '.code..'~'.code).asSequence()124 val codepoints = (indentings + endOfLines + printableChars).map { Codepoint(it) }.toList()125 val ints = Arb.int(codepoints.indices)126 codepoints[ints.sample(rs).value]127 }128fun Arb.Companion.unicode(): Arb<Codepoint> =129 arbitrary(listOf(Codepoint('a'.code))) { rs ->130 val ints = Arb.int(Character.MIN_CODE_POINT..Character.MAX_CODE_POINT)131 Codepoint(ints.sample(rs).value)132 }133val arbLevel =134 Arb.element(135 listOf<(Logger, String) -> Unit>(136 Logger::error,137 Logger::warn,138 Logger::info,139 Logger::debug,140 Logger::trace141 )142 )143val arbMessage =144 Arb.string(0, 1024, Arb.printableMultilinesIndentedAscii())145 .merge(Arb.string(0, 1024, Arb.unicode()))...
GraphProperties.kt
Source:GraphProperties.kt
...173 }.toPersistentMap()174 }175val Arb.Companion.graphWithPairOfVertices176 get() = arbitrary { rs ->177 val graph = connectedGraph.sample(rs)178 val from = Arb.int(0 until graph.value.size).next(rs)179 val to = Arb.int(0 until graph.value.size).filter { it != from }.next(rs)180 graph.value to (from to to)181 }182val Arb.Companion.graphWithSubgraph: Arb<Pair<Graph<Int>, Graph<Int>>>183 get() = arbitrary { rs ->184 connectedGraph.sample(rs).let { graph ->185 graph.value to graph.value.mutate { g ->186 val subgraphSize = Arb.int(4 until graph.value.size).next(rs)187 g.keys.removeIf { it >= subgraphSize }188 g.replaceAll { _, v -> v.mutate { it.keys.removeIf { it >= subgraphSize } } }189 }190 }191 }...
ModelTest.kt
Source:ModelTest.kt
...49 "Before all change webPage directory" {50 //Configuration.WebPageDirectory = "webPageTest"51 //clearDirectory(Configuration.WebPageDirectory)52 }53 "Instantiate sample test class" {54 //val webPage = WebPage("http://test.com")55 }56 }57}58class SentenceSpec : StringSpec() {59 override fun testCaseOrder(): TestCaseOrder? = TestCaseOrder.Sequential60 init {61 "beforeAll change configuration for test purposes" {62 Configuration.databaseFile = "sentenceTest.db"63 Configuration.SentenceDirectory = "sentenceTest"64 clearDirectory()65 Model.items = HashMap<String, Int>()66 }67 "Add test sentence to keyword test" {...
PasswordPhilosophyTest.kt
Source:PasswordPhilosophyTest.kt
1import io.kotest.assertions.throwables.shouldThrow2import io.kotest.core.spec.style.DescribeSpec3import io.kotest.matchers.ints.shouldBeLessThanOrEqual4import io.kotest.matchers.shouldBe5import io.kotest.property.Arb6import io.kotest.property.arbitrary.*7import io.kotest.property.checkAll8import java.io.File9import java.lang.IllegalArgumentException10class PasswordPhilosophyTest : DescribeSpec({11 val p = PasswordPhilosophy()12 val inputFile: List<String> = File("input.txt").readLines()13 describe("passwordPhilosophy") {14 context("Sample test") {15 val ans = 58216 it("returns $ans") {17 val actual = p.passwordPhilosophy(inputFile)18 actual shouldBe ans19 }20 }21 context("One passport missing character") {22 it("returns 2") {23 val actual = p.passwordPhilosophy(24 listOf(25 "1-3 a: abcde",26 "1-3 b: cdefg",27 "2-9 c: ccccccccc"28 )29 )30 actual shouldBe 231 }32 }33 context("Empty passcode") {34 it("returns 0") {35 val actual = p.passwordPhilosophy(listOf("1-2 a: "))36 actual shouldBe 037 }38 }39 context("Character count over limit") {40 it("Returns 0") {41 checkAll(Arb.list(Arb.stringPattern("1-[1-9] a: ([a]{10,20})"))) { s ->42 p.passwordPhilosophy(s) shouldBe 043 }44 }45 }46 context("All passports valid") {47 it("Returns size of input") {48 checkAll(Arb.list(Arb.stringPattern("[a-z]{0,100}"))) { lines ->49 p.passwordPhilosophy(lines.map { code -> "1-${code.length} ${code[0]}: " + code }) shouldBe lines.size50 }51 }52 }53 context("Any number of passports") {54 it("Number of valid passports less than total number of passports") {55 checkAll(Arb.list(Arb.stringPattern("[1-9]-[1-9][1-9] [a-z]: ([a-z]{1,50})"))) { l ->56 p.passwordPhilosophy(l) shouldBeLessThanOrEqual l.size57 }58 }59 }60 context("Incorrect format") {61 it("throws IllegalArgumentException") {62 checkAll(Arb.list(Arb.string()).filter { it.isNotEmpty() }) { s ->63 shouldThrow<IllegalArgumentException> {64 p.passwordPhilosophy(s)65 }66 }67 }68 }69 }70 describe("passwordPhilosophy2") {71 context("Sample test") {72 val ans = 72973 it("returns $ans") {74 val actual = p.passwordPhilosophy2(inputFile)75 actual shouldBe ans76 }77 }78 context("Zero, one, and two occurrences of the character") {79 it("Returns 1 valid passports") {80 val actual = p.passwordPhilosophy2(81 listOf(82 "1-3 c: abc",83 "1-3 c: cbc",84 "1-3 c: aba"85 )86 )87 actual shouldBe 188 }89 }90 context("Occurrences at all indices except the specified") {91 it("Returns 0") {92 val actual = p.passwordPhilosophy2(93 listOf(94 "3-10 i: iiziiiiiiz",95 "1-1 j: x",96 "1-10 k: mkkkkkkkkm"97 )98 )99 actual shouldBe 0100 }101 }102 context("Character count over limit") {103 it("Returns 0") {104 checkAll(Arb.list(Arb.stringPattern("1-[1-9] a: ([a]{10,20})"))) { s ->105 p.passwordPhilosophy2(s) shouldBe 0106 }107 }108 }109 context("All passports valid") {110 it("Returns size of input") {111 checkAll(Arb.list(Arb.stringPattern("[a-z]{26}").map { it.toSet().fold("") { acc, element -> acc + element } })) { lines ->112 p.passwordPhilosophy2(lines.map { code -> "1-${code.length} ${code[0]}: " + code }) shouldBe lines.size113 }114 }115 }116 }117})...
BatchMigrationGenerator.kt
Source:BatchMigrationGenerator.kt
...45 val mig = validMigrationGenerator.next(rs)46 mig.sleepTime = Arb.long(0L, 10000L).orNull().next(rs)47 mig48 }49 val sampleMigrationGenerator = arbitrary { rs: RandomSource ->50 val change = BatchMigrationChange()51 change.tableName = identifierGen(1).orNull().next(rs)52 change.chunkSize = Arb.long(-100L, 10000L).orNull().next(rs)53 val upperBound = Arb.int(0, 5).next(rs)54 val minBound = Arb.int(0, 5).filter { it <= upperBound }.next(rs)55 change.fromColumns = fixedColumnStringSequenceGenerator(minBound, upperBound).orNull().next(rs)56 change.toColumns = fixedColumnStringSequenceGenerator(minBound, upperBound).orNull().next(rs)57 change.sleepTime = Arb.long(-100L, 10000L).orNull().next(rs)58 change59 }60 val invalidMigrationGenerator = sampleMigrationGenerator.filter { c: BatchMigrationChange ->61 val simplePredicate = c.fromColumns.isNullOrEmpty() ||62 c.toColumns.isNullOrEmpty() || (c.chunkSize ?: -1L) <= 0L || c.sleepTime?.let { it < 0L } ?: false63 if (simplePredicate) return@filter true64 else {65 val from = c.fromColumns!!.split(",")66 val to = c.toColumns!!.split(",").toSet()67 // check whether from and to columns are equal somewhere or crossing68 // check whether any to column is in primary keys69 from.size != to.size || from.any { it in to }70 }71 }72 private fun List<String>.toColumnList(): String = joinToString(separator = ",") { it }73 private val fixedColumnListGenerator = { lowerBound: Int, inclusiveUpperBound: Int ->74 Arb.list(identifierGen(1), IntRange(lowerBound, inclusiveUpperBound))...
BinaryBoardingTest.kt
Source:BinaryBoardingTest.kt
1import io.kotest.assertions.throwables.shouldThrow2import io.kotest.core.spec.style.DescribeSpec3import io.kotest.inspectors.forAll4import io.kotest.matchers.ints.shouldBeGreaterThan5import io.kotest.matchers.ints.shouldBeInRange6import io.kotest.matchers.shouldBe7import io.kotest.property.Arb8import io.kotest.property.arbitrary.*9import io.kotest.property.checkAll10import java.io.File11import java.lang.IllegalArgumentException12class BinaryBoardingTest : DescribeSpec({13 val b = BinaryBoarding()14 val input = File("input.txt").readLines()15 describe("Test binaryBoarding") {16 context("Sample test") {17 val expected = 92618 it("Returns $expected") {19 b.binaryBoarding(input) shouldBe expected20 }21 }22 context("Bounds of seat ID") {23 checkAll(Arb.list(Arb.stringPattern("[BF]{7}[RL]{3}"), 1..100)) { l ->24 b.binaryBoarding(l) shouldBeInRange 0..(8 * BinaryBoarding.R_HIGH + BinaryBoarding.C_HIGH)25 }26 }27 context("Leading B yields larger seat ID") {28 checkAll(29 Arb.bind(30 Arb.list(Arb.stringPattern("B[BF]{6}[LR]{3}"), 1..100),31 Arb.list(Arb.stringPattern("F[BF]{6}[LR]{3}"), 1..100)32 ) { low, high -> Pair(low, high) }33 ) { p ->34 b.binaryBoarding(p.first) shouldBeGreaterThan b.binaryBoarding(p.second)35 }36 }37 context("Invalid input") {38 checkAll(Arb.list(Arb.string()).filter { it.size != 10 }) { l ->39 shouldThrow<IllegalArgumentException> {40 b.binaryBoarding(l)41 }42 }43 }44 }45 describe("Test binaryBoarding2") {46 context("Sample test") {47 val expected = 65748 it("Returns $expected") {49 val actual = b.binaryBoarding2(input)50 actual shouldBe expected51 }52 }53 context("Only one seat taken") {54 it("Returns NoSuchElementException") {55 shouldThrow<NoSuchElementException> {56 // Was guaranteed -1 and +1 are in the input57 b.binaryBoarding2(listOf("BBBBBBBRRR"))58 }59 }60 }61 }62 describe("Test getSeatID helper") {63 context("Sample code to Seat ID mapping") {64 listOf(65 "BFFFBBFRRR" to 567,66 "FFFBBBFRRR" to 119,67 "BBFFBBFRLL" to 82068 ).forAll { (code, seatID) ->69 b.getSeatID(code) shouldBe seatID70 }71 }72 }73})...
FilterTest.kt
Source:FilterTest.kt
...34 }35 test("should be stack safe") {36 val arb = object : Arb<Int>() {37 override fun edgecase(rs: RandomSource): Int? = null38 override fun sample(rs: RandomSource): Sample<Int> = Sample(rs.random.nextInt())39 }40 shouldNotThrow<StackOverflowError> {41 arb.filter { it % 2 == 0 }.take(1000000).toList()42 }43 }44 test("should apply filter to shrinks") {45 val arbEvenInts = Arb.int(-100..100).filter { it % 2 == 0 }46 val oddNumbers = (-100..100).filter { it % 2 != 0 }47 arbEvenInts.samples().take(100).forAll { sample ->48 sample.shrinks.value() shouldNotBeIn oddNumbers49 sample.shrinks.children.value.forAll {50 it.value() shouldNotBeIn oddNumbers51 }52 }53 }54 test("Arb.filter composition should not exhaust call stack") {55 var arb: Arb<Int> = Arb.of(0, 1)56 repeat(10000) {57 arb = arb.filter { it == 0 }58 }59 val result = shouldNotThrowAny { arb.single(RandomSource.seeded(1234L)) }60 result shouldBe 061 }62})...
Arb.kt
Source:Arb.kt
...26 it.random.nextULong()27}28inline fun <reified T> Arb.Companion.arrayOf(value: Arb<T>, length: IntRange): Arb<Array<T>> = arbitrary { rs ->29 Array(rs.random.nextInt(length.first, length.last)) {30 value.sample(rs).value31 }32}...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!