$story->addAction(function () {
    $checkpoint = getCheckpoint();
    // this should pass
    $actualData = 1;
    $expectedData1 = 2;
    assertsInteger($actualData)->isLessThan($expectedData1);
    // and these should fail
    try {
        $expectedData2 = $actualData;
        assertsInteger($actualData)->isLessThan($expectedData2);
    } catch (Exception $e) {
        $checkpoint->test2Passed = true;
    }
    try {
        $expectedData3 = 0;
        assertsInteger($actualData)->isLessThan($expectedData3);
    } catch (Exception $e) {
        $checkpoint->test3Passed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("test2Passed");
    assertsBoolean($checkpoint->test2Passed)->isTrue();
    assertsObject($checkpoint)->hasAttribute("test3Passed");
    assertsBoolean($checkpoint->test3Passed)->isTrue();
    }
    try {
        $intData = 11;
        assertsInteger($intData)->isNull();
    } catch (Exception $e) {
        $checkpoint->intTest2Passed = true;
    }
    try {
        $objectData = new stdClass();
        assertsInteger($objectData)->isNull();
    } catch (Exception $e) {
        $checkpoint->objectTestPassed = true;
    }
    try {
        $stringData = "";
        assertsInteger($stringData)->isNull();
    } catch (Exception $e) {
        $checkpoint->stringTestPassed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("doubleTestPassed");
    assertsBoolean($checkpoint->doubleTestPassed)->isTrue();
    assertsObject($checkpoint)->hasAttribute("arrayTestPassed");
    assertsBoolean($checkpoint->arrayTestPassed)->isTrue();
//
// POSSIBLE ACTION(S)
//
// ------------------------------------------------------------------------
$story->addAction(function () {
    $checkpoint = getCheckpoint();
    // these should pass
    $actualData = 2;
    $expectedData1 = 1.0;
    assertsInteger($actualData)->isGreaterThanOrEqualTo($expectedData1);
    $actualData = 2;
    $expectedData2 = 2.0;
    assertsInteger($actualData)->isGreaterThanOrEqualTo($expectedData2);
    // and these should fail
    try {
        $expectedData3 = 3.0;
        assertsInteger($actualData)->isGreaterThanOrEqualTo($expectedData3);
    } catch (Exception $e) {
        $checkpoint->test3Passed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("test3Passed");
    assertsBoolean($checkpoint->test3Passed)->isTrue();
});
    $checkpoint = getCheckpoint();
    // this should pass
    $expectedData1 = 1;
    $actualData1 = 1;
    assertsInteger($actualData1)->equals($expectedData1);
    // and these should fail
    try {
        $expectedData2 = 2;
        assertsInteger($actualData1)->equals($expectedData2);
    } catch (Exception $e) {
        $checkpoint->test2Passed = true;
    }
    // and these should fail
    try {
        $expectedData3 = 0;
        assertsInteger($actualData1)->equals($expectedData3);
    } catch (Exception $e) {
        $checkpoint->test3Passed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("test2Passed");
    assertsBoolean($checkpoint->test2Passed)->isTrue();
    assertsObject($checkpoint)->hasAttribute("test3Passed");
    assertsBoolean($checkpoint->test3Passed)->isTrue();
    }
    try {
        $doubleData = 3.1415927;
        assertsInteger($doubleData)->isInteger();
    } catch (Exception $e) {
        $checkpoint->doubleTest2Passed = true;
    }
    try {
        $objectData = new stdClass();
        assertsInteger($objectData)->isInteger();
    } catch (Exception $e) {
        $checkpoint->objectTestPassed = true;
    }
    try {
        $stringData = "";
        assertsInteger($stringData)->isInteger();
    } catch (Exception $e) {
        $checkpoint->stringTestPassed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("nullTestPassed");
    assertsBoolean($checkpoint->nullTestPassed)->isTrue();
    assertsObject($checkpoint)->hasAttribute("arrayTestPassed");
    assertsBoolean($checkpoint->arrayTestPassed)->isTrue();
//
// ------------------------------------------------------------------------
// ========================================================================
//
// POSSIBLE ACTION(S)
//
// ------------------------------------------------------------------------
$story->addAction(function () {
    $checkpoint = getCheckpoint();
    // this should pass
    $actualData = 2;
    $expectedData1 = 1;
    assertsInteger($actualData)->doesNotEqual($expectedData1);
    // and these should fail
    try {
        $expectedData2 = 2;
        assertsInteger($actualData)->doesNotEqual($expectedData2);
    } catch (Exception $e) {
        $checkpoint->test2Passed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("test2Passed");
    assertsBoolean($checkpoint->test2Passed)->isTrue();
});
//
// ------------------------------------------------------------------------
// ========================================================================
//
// POSSIBLE ACTION(S)
//
// ------------------------------------------------------------------------
$story->addAction(function () {
    $checkpoint = getCheckpoint();
    // this should pass
    $actualData = 2;
    $expectedData1 = 1.0;
    assertsInteger($actualData)->isGreaterThan($expectedData1);
    // and these should fail
    try {
        $expectedData2 = 2.0;
        assertsInteger($actualData)->isGreaterThan($expectedData2);
    } catch (Exception $e) {
        $checkpoint->test2Passed = true;
    }
});
// ========================================================================
//
// POST-TEST INSPECTION
//
// ------------------------------------------------------------------------
$story->addPostTestInspection(function () {
    $checkpoint = getCheckpoint();
    assertsObject($checkpoint)->hasAttribute("test2Passed");
    assertsBoolean($checkpoint->test2Passed)->isTrue();
});