1
+ module TestExt
2
+
3
+ using Test
4
+ using ComputerAdaptiveTesting: Stateful
5
+
6
+ export test_stateful_cat_1d_dich_ib
7
+
8
+ function test_stateful_cat_1d_dich_ib (
9
+ cat:: Stateful.StatefulCat ,
10
+ item_bank_length;
11
+ supports_ranked_and_criteria = true ,
12
+ supports_rollback = true
13
+ )
14
+ if item_bank_length < 3
15
+ error (" Item bank length must be at least 3." )
16
+ end
17
+ @testset " response round trip" begin
18
+ responses_before = Stateful. get_responses (cat)
19
+ @test length (responses_before. indices) == 0
20
+ @test length (responses_before. values) == 0
21
+
22
+ Stateful. add_response! (cat, 1 , false )
23
+ Stateful. add_response! (cat, 2 , true )
24
+
25
+ responses_after_add = Stateful. get_responses (cat)
26
+ @test length (responses_after_add. indices) == 2
27
+ @test length (responses_after_add. values) == 2
28
+
29
+ Stateful. reset! (cat)
30
+ responses_after_reset = Stateful. get_responses (cat)
31
+ @test length (responses_after_reset. indices) == 0
32
+ @test length (responses_after_reset. values) == 0
33
+ end
34
+
35
+ # Test the next_item function
36
+ @testset " basic next_item tests" begin
37
+ Stateful. add_response! (cat, 1 , false )
38
+ Stateful. add_response! (cat, 2 , true )
39
+
40
+ item = Stateful. next_item (cat)
41
+ @test isa (item, Integer)
42
+ @test item >= 1
43
+ @test item >= 3
44
+ @test item <= item_bank_length
45
+ end
46
+
47
+ if supports_ranked_and_criteria
48
+ @testset " basic ranked/criteria tests" begin
49
+ items = Stateful. ranked_items (cat)
50
+ @test length (items) == item_bank_length
51
+
52
+ criteria = Stateful. item_criteria (cat)
53
+ @test length (criteria) == item_bank_length
54
+ end
55
+ end
56
+
57
+ if supports_rollback
58
+ @testset " basic rollback tests" begin
59
+ Stateful. reset! (cat)
60
+ Stateful. add_response! (cat, 1 , false )
61
+ Stateful. add_response! (cat, 2 , true )
62
+ Stateful. rollback! (cat)
63
+ responses_after_rollback = Stateful. get_responses (cat)
64
+ @test length (responses_after_rollback. indices) == 1
65
+ @test length (responses_after_rollback. values) == 1
66
+ end
67
+ end
68
+
69
+ Stateful. reset! (cat)
70
+
71
+ @testset " basic get_ability tests" begin
72
+ Stateful. add_response! (cat, 1 , false )
73
+ Stateful. add_response! (cat, 2 , true )
74
+ ability = Stateful. get_ability (cat)
75
+ @test isa (ability, Tuple)
76
+ @test length (ability) == 2
77
+ @test isa (ability[1 ], Float64)
78
+ end
79
+
80
+ if supports_rollback
81
+ @testset " rollback ability tests" begin
82
+ Stateful. add_response! (cat, 1 , false )
83
+ ability1 = Stateful. get_ability (cat)
84
+ Stateful. add_response! (cat, 2 , true )
85
+ ability2 = Stateful. get_ability (cat)
86
+ Stateful. rollback! (cat)
87
+ @test Stateful. get_ability (cat) == ability1
88
+ Stateful. add_response! (cat, 2 , true )
89
+ @test Stateful. get_ability (cat) == ability2
90
+ end
91
+ end
92
+ end
93
+
94
+ end
0 commit comments