Best Kotest code snippet using io.kotest.inspectors.Inspectors.Array.forSome
CollectionInspectorsTest.kt
Source:CollectionInspectorsTest.kt
1package com.sksamuel.kotest.inspectors2import io.kotest.assertions.assertSoftly3import io.kotest.assertions.shouldFail4import io.kotest.assertions.throwables.shouldThrow5import io.kotest.assertions.throwables.shouldThrowAny6import io.kotest.core.spec.style.WordSpec7import io.kotest.inspectors.forAll8import io.kotest.inspectors.forAny9import io.kotest.inspectors.forAtLeastOne10import io.kotest.inspectors.forAtMostOne11import io.kotest.inspectors.forExactly12import io.kotest.inspectors.forNone13import io.kotest.inspectors.forOne14import io.kotest.inspectors.forSingle15import io.kotest.inspectors.forSome16import io.kotest.matchers.comparables.beGreaterThan17import io.kotest.matchers.comparables.beLessThan18import io.kotest.matchers.ints.shouldBeGreaterThan19import io.kotest.matchers.ints.shouldBeLessThan20import io.kotest.matchers.should21import io.kotest.matchers.shouldBe22@Suppress("ConstantConditionIf")23class CollectionInspectorsTest : WordSpec() {24 private val list = listOf(1, 2, 3, 4, 5)25 private val array = arrayOf(1, 2, 3, 4, 5)26 data class DummyEntry(27 val id: Int,28 val name: String,29 )30 init {31 "forAll" should {32 "pass if all elements of an array pass" {33 array.forAll {34 it.shouldBeGreaterThan(0)35 }36 }37 "pass if all elements of a collection pass" {38 list.forAll {39 it.shouldBeGreaterThan(0)40 }41 }42 "return itself" {43 array.forAll {44 it.shouldBeGreaterThan(0)45 }.forAll {46 it.shouldBeGreaterThan(0)47 }48 list.forAll {49 it.shouldBeGreaterThan(0)50 }.forAll {51 it.shouldBeGreaterThan(0)52 }53 }54 "fail when an exception is thrown inside an array" {55 shouldThrowAny {56 array.forAll {57 if (true) throw NullPointerException()58 }59 }.message shouldBe "0 elements passed but expected 5\n" +60 "\n" +61 "The following elements passed:\n" +62 "--none--\n" +63 "\n" +64 "The following elements failed:\n" +65 "1 => java.lang.NullPointerException\n" +66 "2 => java.lang.NullPointerException\n" +67 "3 => java.lang.NullPointerException\n" +68 "4 => java.lang.NullPointerException\n" +69 "5 => java.lang.NullPointerException"70 }71 "fail when an exception is thrown inside a list" {72 shouldThrowAny {73 list.forAll {74 if (true) throw NullPointerException()75 }76 }.message shouldBe "0 elements passed but expected 5\n" +77 "\n" +78 "The following elements passed:\n" +79 "--none--\n" +80 "\n" +81 "The following elements failed:\n" +82 "1 => java.lang.NullPointerException\n" +83 "2 => java.lang.NullPointerException\n" +84 "3 => java.lang.NullPointerException\n" +85 "4 => java.lang.NullPointerException\n" +86 "5 => java.lang.NullPointerException"87 }88 }89 "forNone" should {90 "pass if no elements pass fn test for a list" {91 list.forNone {92 it shouldBe 1093 }94 }95 "pass if no elements pass fn test for an array" {96 array.forNone {97 it shouldBe 1098 }99 }100 "pass if an element throws an exception" {101 val items = listOf(1, 2, 3)102 items.forNone {103 if (true) throw NullPointerException()104 }105 }106 "return itself" {107 list.forNone {108 it shouldBe 10109 }.forNone {110 it shouldBe 10111 }112 array.forNone {113 it shouldBe 10114 }.forNone {115 it shouldBe 10116 }117 }118 "fail if one elements passes fn test" {119 shouldThrow<AssertionError> {120 list.forNone {121 it shouldBe 4122 }123 }.message shouldBe """1 elements passed but expected 0124The following elements passed:1254126The following elements failed:1271 => expected:<4> but was:<1>1282 => expected:<4> but was:<2>1293 => expected:<4> but was:<3>1305 => expected:<4> but was:<5>"""131 }132 "fail if all elements pass fn test" {133 shouldThrow<AssertionError> {134 list.forNone {135 it should beGreaterThan(0)136 }137 }.message shouldBe """5 elements passed but expected 0138The following elements passed:13911402141314241435144The following elements failed:145--none--"""146 }147 "work inside assertSoftly block" {148 val dummyEntries = listOf(149 DummyEntry(id = 1, name = "first"),150 DummyEntry(id = 2, name = "second"),151 )152 assertSoftly(dummyEntries) {153 forNone {154 it.id shouldBe 3155 it.name shouldBe "third"156 }157 }158 }159 }160 "forSome" should {161 "pass if one elements pass test" {162 list.forSome {163 it shouldBe 3164 }165 }166 "pass if size-1 elements pass test" {167 list.forSome {168 it should beGreaterThan(1)169 }170 }171 "return itself" {172 list.forSome {173 it shouldBe 3174 }.forSome {175 it shouldBe 3176 }177 array.forSome {178 it shouldBe 3179 }.forSome {180 it shouldBe 3181 }182 }183 "fail if no elements pass test" {184 shouldThrow<AssertionError> {185 array.forSome {186 it should beLessThan(0)187 }188 }.message shouldBe """No elements passed but expected at least one189The following elements passed:190--none--191The following elements failed:1921 => 1 should be < 01932 => 2 should be < 01943 => 3 should be < 01954 => 4 should be < 01965 => 5 should be < 0"""197 }198 "fail if all elements pass test" {199 shouldThrow<AssertionError> {200 list.forSome {201 it should beGreaterThan(0)202 }203 }.message shouldBe """All elements passed but expected < 5204The following elements passed:20512062207320842095210The following elements failed:211--none--"""212 }213 "work inside assertSoftly block" {214 val dummyEntries = listOf(215 DummyEntry(id = 1, name = "first"),216 DummyEntry(id = 1, name = "first"),217 DummyEntry(id = 2, name = "second"),218 )219 assertSoftly(dummyEntries) {220 forSome {221 it.id shouldBe 1222 it.name shouldBe "first"223 }224 }225 }226 }227 "forOne" should {228 "pass if one elements pass test" {229 list.forOne {230 it shouldBe 3231 }232 }233 "return itself" {234 list.forOne {235 it shouldBe 3236 }.forOne {237 it shouldBe 3238 }239 array.forOne {240 it shouldBe 3241 }.forOne {242 it shouldBe 3243 }244 }245 "fail if > 1 elements pass test" {246 shouldThrow<AssertionError> {247 list.forOne {248 it should beGreaterThan(2)249 }250 }.message shouldBe """3 elements passed but expected 1251The following elements passed:252325342545255The following elements failed:2561 => 1 should be > 22572 => 2 should be > 2"""258 }259 "fail if no elements pass test" {260 shouldThrow<AssertionError> {261 array.forOne {262 it shouldBe 22263 }264 }.message shouldBe """0 elements passed but expected 1265The following elements passed:266--none--267The following elements failed:2681 => expected:<22> but was:<1>2692 => expected:<22> but was:<2>2703 => expected:<22> but was:<3>2714 => expected:<22> but was:<4>2725 => expected:<22> but was:<5>"""273 }274 "work inside assertSoftly block" {275 val dummyEntries = listOf(276 DummyEntry(id = 1, name = "first"),277 DummyEntry(id = 2, name = "second"),278 )279 assertSoftly(dummyEntries) {280 forOne {281 it.id shouldBe 1282 it.name shouldBe "first"283 }284 }285 }286 }287 "forAny" should {288 "pass if one elements pass test" {289 list.forAny {290 it shouldBe 3291 }292 }293 "pass if at least elements pass test" {294 list.forAny {295 it should beGreaterThan(2)296 }297 }298 "return itself" {299 list.forAny {300 it shouldBe 3301 }.forAny {302 it shouldBe 3303 }304 array.forAny {305 it shouldBe 3306 }.forAny {307 it shouldBe 3308 }309 }310 "fail if no elements pass test" {311 shouldThrow<AssertionError> {312 array.forAny {313 it shouldBe 6314 }315 }.message shouldBe """0 elements passed but expected at least 1316The following elements passed:317--none--318The following elements failed:3191 => expected:<6> but was:<1>3202 => expected:<6> but was:<2>3213 => expected:<6> but was:<3>3224 => expected:<6> but was:<4>3235 => expected:<6> but was:<5>"""324 }325 "work inside assertSoftly block" {326 val dummyEntries = listOf(327 DummyEntry(id = 1, name = "first"),328 DummyEntry(id = 2, name = "second"),329 )330 assertSoftly(dummyEntries) {331 forAny {332 it.id shouldBe 1333 it.name shouldBe "first"334 }335 }336 }337 }338 "forExactly" should {339 "pass if exactly k elements pass" {340 list.forExactly(2) {341 it should beLessThan(3)342 }343 }344 "fail if more elements pass test" {345 shouldThrow<AssertionError> {346 list.forExactly(2) {347 it should beGreaterThan(2)348 }349 }.message shouldBe """3 elements passed but expected 2350The following elements passed:351335243535354The following elements failed:3551 => 1 should be > 23562 => 2 should be > 2"""357 }358 "fail if less elements pass test" {359 shouldThrow<AssertionError> {360 array.forExactly(2) {361 it should beLessThan(2)362 }363 }.message shouldBe """1 elements passed but expected 2364The following elements passed:3651366The following elements failed:3672 => 2 should be < 23683 => 3 should be < 23694 => 4 should be < 23705 => 5 should be < 2"""371 }372 "fail if no elements pass test" {373 shouldThrow<AssertionError> {374 array.forExactly(2) {375 it shouldBe 33376 }377 }.message shouldBe """0 elements passed but expected 2378The following elements passed:379--none--380The following elements failed:3811 => expected:<33> but was:<1>3822 => expected:<33> but was:<2>3833 => expected:<33> but was:<3>3844 => expected:<33> but was:<4>3855 => expected:<33> but was:<5>"""386 }387 }388 "forAtMostOne" should {389 "pass if one elements pass test" {390 list.forAtMostOne {391 it shouldBe 3392 }393 }394 "fail if 2 elements pass test" {395 shouldThrow<AssertionError> {396 array.forAtMostOne {397 it should beGreaterThan(3)398 }399 }.message shouldBe """2 elements passed but expected at most 1400The following elements passed:40144025403The following elements failed:4041 => 1 should be > 34052 => 2 should be > 34063 => 3 should be > 3"""407 }408 "work inside assertSoftly block" {409 val dummyEntries = listOf(410 DummyEntry(id = 1, name = "first"),411 DummyEntry(id = 2, name = "second"),412 )413 assertSoftly(dummyEntries) {414 forAtMostOne {415 it.id shouldBe 1416 it.name shouldBe "first"417 }418 }419 }420 }421 "forAtLeastOne" should {422 "pass if one elements pass test" {423 list.forAtLeastOne {424 it shouldBe 3425 }426 }427 "fail if no elements pass test" {428 shouldThrow<AssertionError> {429 array.forAtLeastOne {430 it shouldBe 22431 }432 }.message shouldBe """0 elements passed but expected at least 1433The following elements passed:434--none--435The following elements failed:4361 => expected:<22> but was:<1>4372 => expected:<22> but was:<2>4383 => expected:<22> but was:<3>4394 => expected:<22> but was:<4>4405 => expected:<22> but was:<5>"""441 }442 "work inside assertSoftly block" {443 val dummyEntries = listOf(444 DummyEntry(id = 1, name = "first"),445 DummyEntry(id = 2, name = "second"),446 )447 assertSoftly(dummyEntries) {448 forAtLeastOne {449 it.id shouldBe 1450 it.name shouldBe "first"451 }452 }453 }454 }455 "forSingle" should {456 "pass list is singular, and the single element pass" {457 listOf(1).forSingle {458 it shouldBeLessThan 3459 }460 }461 "return the single element on success" {462 listOf(1).forSingle { it shouldBeLessThan 3 } shouldBe 1463 }464 "fail if collection consists of multiple elements" {465 shouldFail {466 listOf(467 DummyEntry(id = 1, name = "first"),468 DummyEntry(id = 2, name = "second"),469 ).forSingle {470 it.id shouldBe 1471 }472 }.message shouldBe """473 Expected a single element in the collection, but found 2.474 The following elements passed:475 DummyEntry(id=1, name=first)476 The following elements failed:477 DummyEntry(id=2, name=second) => expected:<1> but was:<2>478 """.trimIndent()479 }480 "fail for empty collection" {481 shouldFail {482 arrayOf<Int>().forSingle {483 it shouldBe 3484 }485 }.message shouldBe """486 Expected a single element in the collection, but it was empty.487 """.trimIndent()488 }489 "fail if single element doesn't match" {490 shouldFail {491 arrayOf(2).forSingle {492 it shouldBe 3493 }494 }.message shouldBe """495 Expected a single element to pass, but it failed.496 The following elements passed:497 --none--498 The following elements failed:499 2 => expected:<3> but was:<2>500 """.trimIndent()501 }502 "work inside assertSoftly block" {503 val dummyEntries = listOf(504 DummyEntry(id = 1, name = "first"),505 )506 assertSoftly(dummyEntries) {507 forSingle {508 it.id shouldBe 1509 it.name shouldBe "first"510 }511 }512 }513 }514 }515}...
InspectorAliasTest.kt
Source:InspectorAliasTest.kt
1package com.sksamuel.kotest2import io.kotest.assertions.throwables.shouldThrowAny3import io.kotest.core.spec.style.FunSpec4import io.kotest.inspectors.shouldForAll5import io.kotest.inspectors.shouldForAny6import io.kotest.inspectors.shouldForAtLeast7import io.kotest.inspectors.shouldForAtLeastOne8import io.kotest.inspectors.shouldForAtMost9import io.kotest.inspectors.shouldForAtMostOne10import io.kotest.inspectors.shouldForExactly11import io.kotest.inspectors.shouldForNone12import io.kotest.inspectors.shouldForOne13import io.kotest.inspectors.shouldForSome14import io.kotest.matchers.comparables.shouldBeGreaterThan15import io.kotest.matchers.ints.shouldBeLessThan16import io.kotest.matchers.shouldBe17class InspectorAliasTest : FunSpec({18 val array = arrayOf(1, 2, 3)19 val list = listOf(1, 2, 3)20 val sequence = sequenceOf(1, 2, 3)21 context("forAll") {22 fun block(x: Int) = x shouldBeGreaterThan 023 test("array") {24 array.shouldForAll {25 it shouldBeLessThan 426 }27 shouldThrowAny {28 array.shouldForAll {29 it shouldBeLessThan 330 }31 }32 }33 test("list") {34 list.shouldForAll(::block)35 shouldThrowAny {36 list.shouldForAll {37 it shouldBeLessThan 338 }39 }40 }41 test("sequence") {42 sequence.shouldForAll(::block)43 shouldThrowAny {44 sequence.shouldForAll {45 it shouldBeLessThan 346 }47 }48 }49 }50 context("forOne") {51 fun block(x: Int) = x shouldBe 252 test("array") {53 array.shouldForOne(::block)54 shouldThrowAny {55 array.shouldForOne {56 it shouldBeLessThan 157 }58 }59 }60 test("list") {61 list.shouldForOne(::block)62 shouldThrowAny {63 list.shouldForOne {64 it shouldBeLessThan 165 }66 }67 }68 test("sequence") {69 sequence.shouldForOne(::block)70 shouldThrowAny {71 sequence.shouldForOne {72 it shouldBeLessThan 173 }74 }75 }76 }77 context("forExactly") {78 fun block(x: Int) = x shouldBeGreaterThan 179 val n = 280 test("array") {81 array.shouldForExactly(n, ::block)82 shouldThrowAny {83 array.shouldForExactly(n) {84 it shouldBeLessThan 185 }86 }87 }88 test("list") {89 list.shouldForExactly(n, ::block)90 shouldThrowAny {91 list.shouldForExactly(n) {92 it shouldBeLessThan 193 }94 }95 }96 test("sequence") {97 sequence.shouldForExactly(n, ::block)98 shouldThrowAny {99 sequence.shouldForExactly(n) {100 it shouldBeLessThan 1101 }102 }103 }104 }105 context("forSome") {106 fun block(x: Int) = x shouldBeGreaterThan 2107 test("array") {108 array.shouldForSome(::block)109 shouldThrowAny {110 array.shouldForSome {111 it shouldBeLessThan 1112 }113 }114 }115 test("list") {116 list.shouldForSome(::block)117 shouldThrowAny {118 list.shouldForSome {119 it shouldBeLessThan 1120 }121 }122 }123 test("sequence") {124 sequence.shouldForSome(::block)125 shouldThrowAny {126 sequence.shouldForSome {127 it shouldBeLessThan 1128 }129 }130 }131 }132 context("forAny") {133 fun block(x: Int) = x shouldBeGreaterThan 0134 test("array") {135 array.shouldForAny(::block)136 shouldThrowAny {137 array.shouldForAny {138 it shouldBeLessThan 1139 }140 }141 }142 test("list") {143 list.shouldForAny(::block)144 shouldThrowAny {145 list.shouldForAny {146 it shouldBeLessThan 1147 }148 }149 }150 test("sequence") {151 sequence.shouldForAny(::block)152 shouldThrowAny {153 sequence.shouldForAny {154 it shouldBeLessThan 1155 }156 }157 }158 }159 context("forAtLeast") {160 fun block(x: Int) = x shouldBeGreaterThan 0161 val n = 3162 test("array") {163 array.shouldForAtLeast(n, ::block)164 shouldThrowAny {165 array.shouldForAtLeast(n) {166 it shouldBeLessThan 3167 }168 }169 }170 test("list") {171 list.shouldForAtLeast(n, ::block)172 shouldThrowAny {173 list.shouldForAtLeast(n) {174 it shouldBeLessThan 3175 }176 }177 }178 test("sequence") {179 sequence.shouldForAtLeast(n, ::block)180 shouldThrowAny {181 sequence.shouldForAtLeast(n) {182 it shouldBeLessThan 3183 }184 }185 }186 }187 context("forAtLeastOne") {188 fun block(x: Int) = x shouldBeGreaterThan 0189 test("array") {190 array.shouldForAtLeastOne(::block)191 shouldThrowAny {192 array.shouldForAtLeastOne {193 it shouldBeLessThan 1194 }195 }196 }197 test("list") {198 list.shouldForAtLeastOne(::block)199 shouldThrowAny {200 list.shouldForAtLeastOne {201 it shouldBeLessThan 1202 }203 }204 }205 test("sequence") {206 sequence.shouldForAtLeastOne(::block)207 shouldThrowAny {208 sequence.shouldForAtLeastOne {209 it shouldBeLessThan 1210 }211 }212 }213 }214 context("forAtMost") {215 fun block(x: Int) = x shouldBeGreaterThan 0216 test("array") {217 val arr = arrayOf(0, 0, 1)218 arr.shouldForAtMost(1, ::block)219 shouldThrowAny {220 arr.shouldForAtMost(1) {221 it shouldBeLessThan 3222 }223 }224 }225 test("list") {226 val l = listOf(0, 1, 1)227 l.shouldForAtMost(2, ::block)228 shouldThrowAny {229 l.shouldForAtMost(2) {230 it shouldBeLessThan 3231 }232 }233 }234 test("sequence") {235 sequence.shouldForAtMost(3, ::block)236 shouldThrowAny {237 sequence.shouldForAtMost(2) {238 it shouldBeLessThan 4239 }240 }241 }242 }243 context("forNone") {244 fun block(x: Int) = x shouldBeLessThan 1245 test("array") {246 array.shouldForNone(::block)247 shouldThrowAny {248 array.shouldForNone {249 it shouldBeLessThan 4250 }251 }252 }253 test("list") {254 list.shouldForNone(::block)255 shouldThrowAny {256 list.shouldForNone {257 it shouldBeLessThan 4258 }259 }260 }261 test("sequence") {262 sequence.shouldForNone(::block)263 shouldThrowAny {264 sequence.shouldForNone {265 it shouldBeLessThan 4266 }267 }268 }269 }270 context("forAtMostOne") {271 fun block(x: Int) = x shouldBe 1272 test("array") {273 array.shouldForAtMostOne(::block)274 }275 test("list") {276 list.shouldForAtMostOne(::block)277 }278 test("sequence") {279 sequence.shouldForAtMostOne(::block)280 }281 }282})...
InspectorsTest.kt
Source:InspectorsTest.kt
1package com.sksamuel.kotest2import io.kotest.assertions.throwables.shouldThrow3import io.kotest.core.spec.style.WordSpec4import io.kotest.inspectors.forAny5import io.kotest.inspectors.forExactly6import io.kotest.inspectors.forNone7import io.kotest.inspectors.forOne8import io.kotest.inspectors.forSome9import io.kotest.matchers.comparables.beGreaterThan10import io.kotest.matchers.comparables.beLessThan11import io.kotest.matchers.should12import io.kotest.matchers.shouldBe13import io.kotest.matchers.shouldNotBe14class InspectorsTest : WordSpec() {15 private val list = listOf(1, 2, 3, 4, 5)16 private val array = arrayOf(1, 2, 3, 4, 5)17 private val charSequence = "charSequence"18 init {19 "forNone" should {20 "pass if no elements pass fn test for a list" {21 list.forNone {22 it shouldBe 1023 }24 }25 "pass if no elements pass fn test for a char sequence" {26 charSequence.forNone {27 it shouldBe 'x'28 }29 }30 "pass if no elements pass fn test for an array" {31 array.forNone {32 it shouldBe 1033 }34 }35 "fail if one elements passes fn test" {36 shouldThrow<AssertionError> {37 list.forNone {38 it shouldBe 439 }40 }.message shouldBe """1 elements passed but expected 041The following elements passed:42443The following elements failed:441 => expected:<4> but was:<1>452 => expected:<4> but was:<2>463 => expected:<4> but was:<3>475 => expected:<4> but was:<5>"""48 }49 "fail if all elements pass fn test" {50 shouldThrow<AssertionError> {51 list.forNone {52 it should beGreaterThan(0)53 }54 }.message shouldBe """5 elements passed but expected 055The following elements passed:56157258359460561The following elements failed:62--none--"""63 }64 }65 "forSome" should {66 "pass if one elements pass test" {67 list.forSome {68 it shouldBe 369 }70 }71 "pass if size-1 elements pass test" {72 list.forSome {73 it should beGreaterThan(1)74 }75 }76 "pass if two elements pass test for a char sequence" {77 charSequence.forSome {78 it shouldBe 'c'79 }80 }81 "fail if no elements pass test" {82 shouldThrow<AssertionError> {83 array.forSome {84 it should beLessThan(0)85 }86 }.message shouldBe """No elements passed but expected at least one87The following elements passed:88--none--89The following elements failed:901 => 1 should be < 0912 => 2 should be < 0923 => 3 should be < 0934 => 4 should be < 0945 => 5 should be < 0"""95 }96 "fail if all elements pass test" {97 shouldThrow<AssertionError> {98 list.forSome {99 it should beGreaterThan(0)100 }101 }.message shouldBe """All elements passed but expected < 5102The following elements passed:10311042105310641075108The following elements failed:109--none--"""110 }111 }112 "forOne" should {113 "pass if one elements pass test" {114 list.forOne {115 it shouldBe 3116 }117 }118 "fail if all elements pass test for a char sequence" {119 shouldThrow<AssertionError> {120 charSequence.forOne { t ->121 t shouldNotBe 'X'122 }123 }.message shouldBe """12 elements passed but expected 1124The following elements passed:125c126h127a128r129S130e131q132u133e134n135... and 2 more passed elements136The following elements failed:137--none--"""138 }139 "fail if > 1 elements pass test" {140 shouldThrow<AssertionError> {141 list.forOne { t ->142 t should beGreaterThan(2)143 }144 }.message shouldBe """3 elements passed but expected 1145The following elements passed:146314741485149The following elements failed:1501 => 1 should be > 21512 => 2 should be > 2"""152 }153 "fail if no elements pass test" {154 shouldThrow<AssertionError> {155 array.forOne { t ->156 t shouldBe 22157 }158 }.message shouldBe """0 elements passed but expected 1159The following elements passed:160--none--161The following elements failed:1621 => expected:<22> but was:<1>1632 => expected:<22> but was:<2>1643 => expected:<22> but was:<3>1654 => expected:<22> but was:<4>1665 => expected:<22> but was:<5>"""167 }168 }169 "forAny" should {170 "pass if one elements pass test" {171 list.forAny { t ->172 t shouldBe 3173 }174 }175 "pass if at least elements pass test" {176 list.forAny { t ->177 t should beGreaterThan(2)178 }179 }180 "pass if all elements pass test for a char sequence" {181 charSequence.forAny {182 it shouldNotBe 'X'183 }184 }185 "fail if no elements pass test" {186 shouldThrow<AssertionError> {187 array.forAny { t ->188 t shouldBe 6189 }190 }.message shouldBe """0 elements passed but expected at least 1191The following elements passed:192--none--193The following elements failed:1941 => expected:<6> but was:<1>1952 => expected:<6> but was:<2>1963 => expected:<6> but was:<3>1974 => expected:<6> but was:<4>1985 => expected:<6> but was:<5>"""199 }200 }201 "forExactly" should {202 "pass if exactly k elements pass" {203 list.forExactly(2) { t ->204 t should beLessThan(3)205 }206 }207 "pass if exactly k elements pass for a char sequence" {208 charSequence.forExactly(1) {209 it shouldBe 'h'210 }211 }212 "fail if more elements pass test" {213 shouldThrow<AssertionError> {214 list.forExactly(2) { t ->215 t should beGreaterThan(2)216 }217 }.message shouldBe """3 elements passed but expected 2218The following elements passed:219322042215222The following elements failed:2231 => 1 should be > 22242 => 2 should be > 2"""225 }226 "fail if less elements pass test" {227 shouldThrow<AssertionError> {228 array.forExactly(2) { t ->229 t should beLessThan(2)230 }231 }.message shouldBe """1 elements passed but expected 2232The following elements passed:2331234The following elements failed:2352 => 2 should be < 22363 => 3 should be < 22374 => 4 should be < 22385 => 5 should be < 2"""239 }240 "fail if no elements pass test" {241 shouldThrow<AssertionError> {242 list.forExactly(2) { t ->243 t shouldBe 33244 }245 }.message shouldBe """0 elements passed but expected 2246The following elements passed:247--none--248The following elements failed:2491 => expected:<33> but was:<1>2502 => expected:<33> but was:<2>2513 => expected:<33> but was:<3>2524 => expected:<33> but was:<4>2535 => expected:<33> but was:<5>"""254 }255 }256 }257}...
Inspectors.kt
Source:Inspectors.kt
1package com.github.shwaka.kotest.inspectors2import io.kotest.inspectors.ElementPass3import io.kotest.inspectors.runTests4fun <T> Sequence<T>.forAll(fn: (T) -> Unit) = toList().forAll(fn)5fun <T> Array<T>.forAll(fn: (T) -> Unit) = asList().forAll(fn)6fun <T> Collection<T>.forAll(fn: (T) -> Unit) {7 val results = runTests(this, fn)8 val passed = results.filterIsInstance<ElementPass<T>>()9 if (passed.size < this.size) {10 val msg = "${passed.size} elements passed but expected ${this.size}"11 buildAssertionError(msg, results)12 }13}14fun <T> Sequence<T>.forOne(fn: (T) -> Unit) = toList().forOne(fn)15fun <T> Array<T>.forOne(fn: (T) -> Unit) = asList().forOne(fn)16fun <T> Collection<T>.forOne(fn: (T) -> Unit) = forExactly(1, fn)17fun <T> Sequence<T>.forExactly(k: Int, fn: (T) -> Unit) = toList().forExactly(k, fn)18fun <T> Array<T>.forExactly(k: Int, fn: (T) -> Unit) = toList().forExactly(k, fn)19fun <T> Collection<T>.forExactly(k: Int, fn: (T) -> Unit) {20 val results = runTests(this, fn)21 val passed = results.filterIsInstance<ElementPass<T>>()22 if (passed.size != k) {23 val msg = "${passed.size} elements passed but expected $k"24 buildAssertionError(msg, results)25 }26}27fun <T> Sequence<T>.forSome(fn: (T) -> Unit) = toList().forSome(fn)28fun <T> Array<T>.forSome(fn: (T) -> Unit) = toList().forSome(fn)29fun <T> Collection<T>.forSome(fn: (T) -> Unit) {30 val results = runTests(this, fn)31 val passed = results.filterIsInstance<ElementPass<T>>()32 if (passed.isEmpty()) {33 buildAssertionError("No elements passed but expected at least one", results)34 } else if (passed.size == size) {35 buildAssertionError("All elements passed but expected < $size", results)36 }37}38fun <T> Sequence<T>.forAny(fn: (T) -> Unit) = toList().forAny(fn)39fun <T> Array<T>.forAny(fn: (T) -> Unit) = toList().forAny(fn)40fun <T> Collection<T>.forAny(fn: (T) -> Unit) = forAtLeastOne(fn)41fun <T> Sequence<T>.forAtLeastOne(fn: (T) -> Unit) = toList().forAtLeastOne(fn)42fun <T> Array<T>.forAtLeastOne(fn: (T) -> Unit) = toList().forAtLeastOne(fn)43fun <T> Collection<T>.forAtLeastOne(f: (T) -> Unit) = forAtLeast(1, f)44fun <T> Sequence<T>.forAtLeast(k: Int, fn: (T) -> Unit) = toList().forAtLeast(k, fn)45fun <T> Array<T>.forAtLeast(k: Int, fn: (T) -> Unit) = toList().forAtLeast(k, fn)46fun <T> Collection<T>.forAtLeast(k: Int, fn: (T) -> Unit) {47 val results = runTests(this, fn)48 val passed = results.filterIsInstance<ElementPass<T>>()49 if (passed.size < k) {50 val msg = "${passed.size} elements passed but expected at least $k"51 buildAssertionError(msg, results)52 }53}54fun <T> Sequence<T>.forAtMostOne(fn: (T) -> Unit) = toList().forAtMostOne(fn)55fun <T> Array<T>.forAtMostOne(fn: (T) -> Unit) = toList().forAtMostOne(fn)56fun <T> Collection<T>.forAtMostOne(fn: (T) -> Unit) = forAtMost(1, fn)57fun <T> Sequence<T>.forAtMost(k: Int, fn: (T) -> Unit) = toList().forAtMost(k, fn)58fun <T> Array<T>.forAtMost(k: Int, fn: (T) -> Unit) = toList().forAtMost(k, fn)59fun <T> Collection<T>.forAtMost(k: Int, fn: (T) -> Unit) {60 val results = runTests(this, fn)61 val passed = results.filterIsInstance<ElementPass<T>>()62 if (passed.size > k) {63 val msg = "${passed.size} elements passed but expected at most $k"64 buildAssertionError(msg, results)65 }66}67fun <T> Sequence<T>.forNone(fn: (T) -> Unit) = toList().forNone(fn)68fun <T> Array<T>.forNone(fn: (T) -> Unit) = toList().forNone(fn)69fun <T> Collection<T>.forNone(f: (T) -> Unit) {70 val results = runTests(this, f)71 val passed = results.filterIsInstance<ElementPass<T>>()72 if (passed.isNotEmpty()) {73 val msg = "${passed.size} elements passed but expected ${0}"74 buildAssertionError(msg, results)75 }76}...
InspectorAliases.kt
Source:InspectorAliases.kt
1package io.kotest.inspectors2/** Alias for [Sequence.forAll] */3fun <T> Sequence<T>.shouldForAll(fn: (T) -> Unit) = forAll(fn)4/** Alias for [Array.forAll] */5fun <T> Array<T>.shouldForAll(fn: (T) -> Unit) = forAll(fn)6/** Alias for [Collection.forAll] */7fun <T> Collection<T>.shouldForAll(fn: (T) -> Unit) = forAll(fn)8/** Alias for [Sequence.forOne] */9fun <T> Sequence<T>.shouldForOne(fn: (T) -> Unit) = forOne(fn)10/** Alias for [Array.forOne] */11fun <T> Array<T>.shouldForOne(fn: (T) -> Unit) = forOne(fn)12/** Alias for [Collection.forOne] */13fun <T> Collection<T>.shouldForOne(fn: (T) -> Unit) = forOne(fn)14/** Alias for [Sequence.forExactly] */15fun <T> Sequence<T>.shouldForExactly(k: Int, fn: (T) -> Unit) = forExactly(k, fn)16/** Alias for [Array.forExactly] */17fun <T> Array<T>.shouldForExactly(k: Int, fn: (T) -> Unit) = forExactly(k, fn)18/** Alias for [Collection.forExactly] */19fun <T> Collection<T>.shouldForExactly(k: Int, fn: (T) -> Unit) = forExactly(k, fn)20/** Alias for [Sequence.forSome] */21fun <T> Sequence<T>.shouldForSome(fn: (T) -> Unit) = forSome(fn)22/** Alias for [Array.forSome] */23fun <T> Array<T>.shouldForSome(fn: (T) -> Unit) = forSome(fn)24/** Alias for [Collection.forSome] */25fun <T> Collection<T>.shouldForSome(fn: (T) -> Unit) = forSome(fn)26/** Alias for [Sequence.forAny] */27fun <T> Sequence<T>.shouldForAny(fn: (T) -> Unit) = forAny(fn)28/** Alias for [Array.forAny] */29fun <T> Array<T>.shouldForAny(fn: (T) -> Unit) = forAny(fn)30/** Alias for [Collection.forAny] */31fun <T> Collection<T>.shouldForAny(fn: (T) -> Unit) = forAny(fn)32/** Alias for [Sequence.forAtLeastOne] */33fun <T> Sequence<T>.shouldForAtLeastOne(fn: (T) -> Unit) = forAtLeastOne(fn)34/** Alias for [Array.forAtLeastOne] */35fun <T> Array<T>.shouldForAtLeastOne(fn: (T) -> Unit) = forAtLeastOne(fn)36/** Alias for [Collection.forAtLeastOne] */37fun <T> Collection<T>.shouldForAtLeastOne(fn: (T) -> Unit) = forAtLeastOne(fn)38/** Alias for [Sequence.forAtLeast] */39fun <T> Sequence<T>.shouldForAtLeast(k: Int, fn: (T) -> Unit) = forAtLeast(k, fn)40/** Alias for [Array.forAtLeast] */41fun <T> Array<T>.shouldForAtLeast(k: Int, fn: (T) -> Unit) = forAtLeast(k, fn)42/** Alias for [Collection.forAtLeast] */43fun <T> Collection<T>.shouldForAtLeast(k: Int, fn: (T) -> Unit) = forAtLeast(k, fn)44/** Alias for [Sequence.forAtMostOne] */45fun <T> Sequence<T>.shouldForAtMostOne(fn: (T) -> Unit) = forAtMostOne(fn)46/** Alias for [Array.forAtMostOne] */47fun <T> Array<T>.shouldForAtMostOne(fn: (T) -> Unit) = forAtMostOne(fn)48/** Alias for [Collection.forAtMostOne] */49fun <T> Collection<T>.shouldForAtMostOne(fn: (T) -> Unit) = forAtMostOne(fn)50/** Alias for [Sequence.forAtMost] */51fun <T> Sequence<T>.shouldForAtMost(k: Int, fn: (T) -> Unit) = forAtMost(k, fn)52/** Alias for [Array.forAtMost] */53fun <T> Array<T>.shouldForAtMost(k: Int, fn: (T) -> Unit) = forAtMost(k, fn)54/** Alias for [Collection.forAtMost] */55fun <T> Collection<T>.shouldForAtMost(k: Int, fn: (T) -> Unit) = forAtMost(k, fn)56/** Alias for [Sequence.forNone] */57fun <T> Sequence<T>.shouldForNone(fn: (T) -> Unit) = forNone(fn)58/** Alias for [Array.forNone] */59fun <T> Array<T>.shouldForNone(fn: (T) -> Unit) = forNone(fn)60/** Alias for [Collection.forNone] */61fun <T> Collection<T>.shouldForNone(fn: (T) -> Unit) = forNone(fn)...
NumbersTestWithInspectors.kt
Source:NumbersTestWithInspectors.kt
1import io.kotest.core.spec.style.StringSpec2import io.kotest.inspectors.*3import io.kotest.matchers.ints.shouldBeGreaterThanOrEqual4import io.kotest.matchers.shouldBe5class NumbersTestWithInspectors : StringSpec({6 val numbers = Array(10) { it + 1 }7 "all are non-negative" {8 numbers.forAll { it shouldBeGreaterThanOrEqual 0 }9 }10 "none is zero" { numbers.forNone { it shouldBe 0 } }11 "a single 10" { numbers.forOne { it shouldBe 10 } }12 "at most one 0" { numbers.forAtMostOne { it shouldBe 0 } }13 "at least one odd number" {14 numbers.forAtLeastOne { it % 2 shouldBe 1 }15 }16 "at most five odd numbers" {17 numbers.forAtMost(5) { it % 2 shouldBe 1 }18 }19 "at least three even numbers" {20 numbers.forAtLeast(3) { it % 2 shouldBe 0 }21 }22 "some numbers are odd" { numbers.forAny { it % 2 shouldBe 1 } }23 "some but not all numbers are even" {24 numbers.forSome { it % 2 shouldBe 0 }25 }26 "exactly five numbers are even" {27 numbers.forExactly(5) { it % 2 shouldBe 0 }28 }29})...
Array.forSome
Using AI Code Generation
1 import io.kotest.inspectors.forSome2 import io.kotest.matchers.shouldBe3 import io.kotest.matchers.shouldNotBe4 import io.kotest.core.spec.style.StringSpec5 class ForSomeTest : StringSpec({6 "forSome" {7 val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)8 forSome(list) { it shouldBe 1 }9 forSome(list) { it shouldBe 2 }10 forSome(list) { it shouldBe 3 }11 forSome(list) { it shouldBe 4 }12 forSome(list) { it shouldBe 5 }13 forSome(list) { it shouldBe 6 }14 forSome(list) { it shouldBe 7 }15 forSome(list) { it shouldBe 8 }16 forSome(list) { it shouldBe 9 }17 forSome(list) { it shouldBe 10 }18 forSome(list) { it shouldNotBe 11 }19 }20 })21 import io.kotest.inspectors.forAll22 import io.kotest.matchers.shouldBe23 import io.kotest.matchers.shouldNotBe24 import io.kotest.core.spec.style.StringSpec25 class ForAllTest : StringSpec({26 "forAll" {27 val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)28 forAll(list) { it shouldBe 1 }29 forAll(list) { it shouldBe 2 }30 forAll(list) { it shouldBe 3 }31 forAll(list) { it shouldBe 4 }32 forAll(list) { it shouldBe 5 }33 forAll(list) { it shouldBe 6 }34 forAll(list) { it shouldBe 7 }35 forAll(list) { it shouldBe 8 }36 forAll(list) { it shouldBe 9 }37 forAll(list) { it shouldBe 10 }38 forAll(list) { it shouldNotBe
Array.forSome
Using AI Code Generation
1val array = arrayOf(1, 2, 3, 4, 5)2array.forSome { it shouldBe 1 }3array.forSome { it shouldBe 2 }4array.forSome { it shouldBe 3 }5array.forSome { it shouldBe 4 }6array.forSome { it shouldBe 5 }7array.forSome { it shouldBe 6 }8array.forSome { it shouldBe 7 }9array.forSome { it shouldBe 8 }10array.forSome { it shouldBe 9 }11array.forSome { it shouldBe 10 }12val array = arrayOf(1, 2, 3, 4, 5)13array.forNone { it shouldBe 1 }14array.forNone { it shouldBe 2 }15array.forNone { it shouldBe 3 }16array.forNone { it shouldBe 4 }17array.forNone { it shouldBe 5 }18array.forNone { it shouldBe 6 }19array.forNone { it shouldBe 7 }20array.forNone { it shouldBe 8 }21array.forNone { it shouldBe 9 }22array.forNone { it shouldBe 10 }23val array = arrayOf(1, 2, 3, 4, 5)24array.forAtLeastOne { it shouldBe 1 }25array.forAtLeastOne { it shouldBe 2 }26array.forAtLeastOne { it shouldBe 3 }27array.forAtLeastOne { it shouldBe 4 }28array.forAtLeastOne { it shouldBe 5 }29array.forAtLeastOne { it shouldBe 6 }30array.forAtLeastOne { it shouldBe 7 }31array.forAtLeastOne { it shouldBe 8 }32array.forAtLeastOne { it shouldBe 9 }33array.forAtLeastOne { it shouldBe 10 }34val array = arrayOf(1, 2, 3, 4, 5)35array.forAtLeast(1) { it shouldBe 1 }36array.forAtLeast(2) { it shouldBe 2 }37array.forAtLeast(3) { it shouldBe 3 }38array.forAtLeast(4) { it shouldBe 4 }39array.forAtLeast(5) { it shouldBe 5 }
Array.forSome
Using AI Code Generation
1import io.kotest.inspectors.forSome2val list = listOf(1, 2, 3, 4)3forSome(list) { element -> element > 2 }4import io.kotest.inspectors.shouldAll5val list = listOf(1, 2, 3, 4)6list.shouldAll { element -> element > 2 }7import io.kotest.inspectors.shouldAny8val list = listOf(1, 2, 3, 4)9list.shouldAny { element -> element > 2 }10import io.kotest.inspectors.shouldContainAll11val list = listOf(1, 2, 3, 4)12list.shouldContainAll(1, 2)13import io.kotest.inspectors.shouldContain14val list = listOf(1, 2, 3, 4)15list.shouldContain(1)16import io.kotest.inspectors.shouldContainNone17val list = listOf(1, 2, 3, 4)18list.shouldContainNone(5)19import io.kotest.inspectors.shouldContainOnly20val list = listOf(1, 2, 3, 4)21list.shouldContainOnly(1, 2, 3, 4)22import io.kotest.inspectors.shouldHaveAtLeastOne23val list = listOf(1, 2, 3, 4)24list.shouldHaveAtLeastOne { element -> element > 2 }25import io.kotest.inspectors.shouldHaveAtMostOne26val list = listOf(1, 2, 3, 4
Array.forSome
Using AI Code Generation
1@DisplayName("test Array.forSome method of io.kotest.inspectors.Inspectors class")2@ValueSource(strings = ["123", "456", "789"])3fun `test Array.forSome method of io.kotest.inspectors.Inspectors class`(str: String) {4Array.forSome(1..10) { it % 2 == 0 } shouldBe true5Array.forSome(str.toCharArray()) { it.isDigit() } shouldBe true6}7@DisplayName("test Array.forNone method of io.kotest.inspectors.Inspectors class")8@ValueSource(strings = ["123", "456", "789"])9fun `test Array.forNone method of io.kotest.inspectors.Inspectors class`(str: String) {10Array.forNone(1..10) { it % 2 == 1 } shouldBe true11Array.forNone(str.toCharArray()) { it.isLetter() } shouldBe true12}13}
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!!