size

infix fun <E, T : Collection<E>> Expect<T>.size(assertionCreator: Expect<Int>.() -> Unit): Expect<T>(source)

Expects that the property Collection.size of the subject of this expectation holds all assertions the given assertionCreator creates for it and returns an Expect for the current subject of this expectation.

Return

an Expect for the subject of this expectation.

Samples

expect(listOf(1, 2, 3))
    .size { // subject inside this expectation-group is of type Int (actually 3)
        it toBeGreaterThan 1
    } // subject here is back to type List<Int>
    .size { // subject inside this expectation-group is of type Int (actually 3)
        it toBeLessThan 4
    }

fails {
    // all expectations inside an expectation-group are evaluated together; for more details see:
    // https://github.com/robstoll/atrium#define-single-expectations-or-an-expectation-group
    expect(listOf(1, 2, 3)) size { // subject inside this expectation-group is of type Int (actually 3)
        it toBeLessThan 1     // fails
        it toBeGreaterThan 4  // isLessThan 1 fails, but isGreaterThan 4 still evaluated
        //                       use `.size.` if you want a fail fast behaviour
    }
}

infix fun <K, V, T : Map<out K, V>> Expect<T>.size(assertionCreator: Expect<Int>.() -> Unit): Expect<T>(source)

Expects that the property Collection.size of the subject of this expectation holds all assertions the given assertionCreator creates for it and returns an Expect for the current subject of this expectation.

Return

an Expect for the subject of this expectation.

Since

0.15.0

Samples

expect(mapOf(1 to "a", 2 to "b")) size {   // subject inside this expectation-group is of type Int (containing 2)
    this toEqual 2
    this toBeGreaterThan 1
}

fails {
    // all expectations are evaluated inside an expectation-group block; for more details:
    // https://github.com/robstoll/atrium#define-single-expectations-or-an-expectation-group

    expect(mapOf(1 to "a")) size { // subject inside this expectation-group is of type Int (containing 1)
        this toEqual 2      // fails because 1 is not equal to 2
        this toBeLessThan 0      // fails because 1 is not less than 0
        // use `.size.` if you want a fail fast behaviour
    }
}

Creates an Expect for the property Collection.size of the subject of this expectation, so that further fluent calls are assertions about it.

Return

The newly created Expect for the extracted feature.

Samples

expect(listOf(1, 2, 3))
    .size toBeGreaterThan 1 toBeLessThan 4
//       |                 |             | subject is still of type Int (still 3)
//       |                 | subject is still of type Int (still 3)
//       | subject is now of type Int (actually 3)

fails {
    expect(listOf(1, 2, 3))
        .size toBeLessThan 1 toBeGreaterThan 4
    //       |              |         | not reported because `isLessThan 1` already fails
    //       |              | fails
    //       | subject is now of type Int (actually 3)
}

val <T : Map<*, *>> Expect<T>.size: Expect<Int>(source)

Creates an Expect for the property Collection.size of the subject of this expectation, so that further fluent calls are assertions about it.

Return

The newly created Expect for the extracted feature.

Since

0.15.0

Samples

expect(mapOf(1 to "a", 2 to "b")).size toEqual 2
//                               | subject is now of type Int (containing 2)

fails {
    // fails because 1 is not equal to 2
    expect(mapOf(1 to "a")).size toEqual 2
    //                     | subject is now of type Int (containing 1)
}