@@ -23,7 +23,8 @@ end entity tb_data_structures;
2323architecture test_fixture of tb_data_structures is
2424
2525
26- shared variable sv_dict : Integer_Slv_Dict;
26+ shared variable sv_int_slv_dict : Integer_Slv_Dict;
27+ shared variable sv_string_slv_dict : String_Slv_Dict;
2728
2829
2930begin
@@ -36,56 +37,118 @@ begin
3637 checker_init(display_format => verbose);
3738 while test_suite loop
3839 if run(" Test that dictionary is empty in initial state" ) then
39- check_equal(sv_dict.Count, 0 );
40+ -- Integer_Slv_Dict
41+ check_equal(sv_int_slv_dict.Count, 0 );
42+ -- String_Slv_Dict
43+ check_equal(sv_string_slv_dict.Count, 0 );
4044 elsif run(" Test that dictionary data can be set" ) then
41- sv_dict.Set(42 , x"DEADBEEF" );
42- check(sv_dict.HasKey(42 ));
45+ -- Integer_Slv_Dict
46+ sv_int_slv_dict.Set(42 , x"DEADBEEF" );
47+ check(sv_int_slv_dict.HasKey(42 ));
48+ -- String_Slv_Dict
49+ sv_string_slv_dict.Set(" 42" , x"DEADBEEF" );
50+ check(sv_string_slv_dict.HasKey(" 42" ));
4351 elsif run(" Test that dictionary data can be set and count is updated" ) then
44- sv_dict.Set(42 , x"DEADBEEF" );
45- check_equal(sv_dict.Count, 1 );
52+ -- Integer_Slv_Dict
53+ sv_int_slv_dict.Set(42 , x"DEADBEEF" );
54+ check_equal(sv_int_slv_dict.Count, 1 );
55+ -- String_Slv_Dict
56+ sv_string_slv_dict.Set(" 42" , x"DEADBEEF" );
57+ check_equal(sv_string_slv_dict.Count, 1 );
4658 elsif run(" Test that dictionary data can be set and retrieved" ) then
47- sv_dict.Set(42 , x"DEADBEEF" );
48- check_equal(sv_dict.Get (42 ), std_logic_vector '(x"DEADBEEF" ));
59+ -- Integer_Slv_Dict
60+ sv_int_slv_dict.Set(42 , x"DEADBEEF" );
61+ check_equal(sv_int_slv_dict.Get (42 ), std_logic_vector '(x"DEADBEEF" ));
62+ -- String_Slv_Dict
63+ sv_string_slv_dict.Set(" 42" , x"DEADBEEF" );
64+ check_equal(sv_string_slv_dict.Get (" 42" ), std_logic_vector '(x"DEADBEEF" ));
4965 elsif run(" Test that dictionary data can be set and removed" ) then
50- sv_dict.Set(42 , x"DEADBEEF" );
51- check(sv_dict.HasKey(42 ));
52- sv_dict.Del(42 );
53- check_false(sv_dict.HasKey(42 ));
66+ -- Integer_Slv_Dict
67+ sv_int_slv_dict.Set(42 , x"DEADBEEF" );
68+ check(sv_int_slv_dict.HasKey(42 ));
69+ sv_int_slv_dict.Del(42 );
70+ check_false(sv_int_slv_dict.HasKey(42 ));
71+ -- String_Slv_Dict
72+ sv_string_slv_dict.Set(" 42" , x"DEADBEEF" );
73+ check(sv_string_slv_dict.HasKey(" 42" ));
74+ sv_string_slv_dict.Del(" 42" );
75+ check_false(sv_string_slv_dict.HasKey(" 42" ));
5476 elsif run(" Test that dictionary data can be overwritten when having same key" ) then
55- sv_dict.Set(42 , x"DEADBEEF" );
56- sv_dict.Set(42 , x"DEADAFFE" );
57- check_equal(sv_dict.Get (42 ), std_logic_vector '(x"DEADAFFE" ));
77+ -- Integer_Slv_Dict
78+ sv_int_slv_dict.Set(42 , x"DEADBEEF" );
79+ sv_int_slv_dict.Set(42 , x"DEADAFFE" );
80+ check_equal(sv_int_slv_dict.Get (42 ), std_logic_vector '(x"DEADAFFE" ));
81+ -- String_Slv_Dict
82+ sv_string_slv_dict.Set(" 42" , x"DEADBEEF" );
83+ sv_string_slv_dict.Set(" 42" , x"DEADAFFE" );
84+ check_equal(sv_string_slv_dict.Get (" 42" ), std_logic_vector '(x"DEADAFFE" ));
5885 elsif run(" Test that dictionary data with same hash table slot can be set and retrieved" ) then
59- sv_dict.Set(1 , x"DEADBEEF" );
60- sv_dict.Set(129 , x"DEADAFFE" );
61- check_equal(sv_dict.Get (1 ), std_logic_vector '(x"DEADBEEF" ));
62- check_equal(sv_dict.Get (129 ), std_logic_vector '(x"DEADAFFE" ));
63- check_equal(sv_dict.Count, 2 );
86+ -- Integer_Slv_Dict
87+ sv_int_slv_dict.Set(1 , x"DEADBEEF" );
88+ sv_int_slv_dict.Set(129 , x"DEADAFFE" );
89+ check_equal(sv_int_slv_dict.Get (1 ), std_logic_vector '(x"DEADBEEF" ));
90+ check_equal(sv_int_slv_dict.Get (129 ), std_logic_vector '(x"DEADAFFE" ));
91+ check_equal(sv_int_slv_dict.Count, 2 );
92+ -- String_Slv_Dict
93+ sv_string_slv_dict.Set("1" , x"DEADBEEF" );
94+ sv_string_slv_dict.Set(" 129" , x"DEADAFFE" );
95+ check_equal(sv_string_slv_dict.Get ("1" ), std_logic_vector '(x"DEADBEEF" ));
96+ check_equal(sv_string_slv_dict.Get (" 129" ), std_logic_vector '(x"DEADAFFE" ));
97+ check_equal(sv_string_slv_dict.Count, 2 );
6498 elsif run(" Test that dictionary data with same hash table slot can be set and completely removed" ) then
65- sv_dict.Set(1 , x"DEADBEEF" );
66- sv_dict.Set(129 , x"DEADAFFE" );
67- check_equal(sv_dict.Count, 2 );
68- sv_dict.Del(1 );
69- check_equal(sv_dict.Count, 1 );
70- sv_dict.Del(129 );
71- check_equal(sv_dict.Count, 0 );
99+ sv_int_slv_dict.Set(1 , x"DEADBEEF" );
100+ sv_int_slv_dict.Set(129 , x"DEADAFFE" );
101+ check_equal(sv_int_slv_dict.Count, 2 );
102+ sv_int_slv_dict.Del(1 );
103+ check_equal(sv_int_slv_dict.Count, 1 );
104+ sv_int_slv_dict.Del(129 );
105+ check_equal(sv_int_slv_dict.Count, 0 );
106+ -- String_Slv_Dict
107+ sv_string_slv_dict.Set("1" , x"DEADBEEF" );
108+ sv_string_slv_dict.Set(" 129" , x"DEADAFFE" );
109+ check_equal(sv_string_slv_dict.Count, 2 );
110+ sv_string_slv_dict.Del("1" );
111+ check_equal(sv_string_slv_dict.Count, 1 );
112+ sv_string_slv_dict.Del(" 129" );
113+ check_equal(sv_string_slv_dict.Count, 0 );
72114 elsif run(" Test that dictionary data can be stored and retrieved in every hash table slot" ) then
115+ -- Integer_Slv_Dict
73116 v_random.InitSeed(test_runner'instance_name );
74117 for i in 0 to 127 loop
75- sv_dict.Set(i, v_random.RandSlv(32 ));
118+ sv_int_slv_dict.Set(i, v_random.RandSlv(32 ));
119+ sv_string_slv_dict.Set(to_string(i), v_random.RandSlv(32 ));
76120 end loop ;
77121 v_random.InitSeed(test_runner'instance_name );
78122 for i in 0 to 127 loop
79- check_equal(sv_dict.Get (i), v_random.RandSlv(32 ));
123+ check_equal(sv_int_slv_dict.Get (i), v_random.RandSlv(32 ));
124+ check_equal(sv_string_slv_dict.Get (to_string(i)), v_random.RandSlv(32 ));
80125 end loop ;
81- check_equal(sv_dict.Count, 128 );
126+ check_equal(sv_int_slv_dict.Count, 128 );
127+ -- String_Slv_Dict
128+ v_random.InitSeed(test_runner'instance_name );
129+ for i in 0 to 127 loop
130+ sv_string_slv_dict.Set(to_string(i), v_random.RandSlv(32 ));
131+ end loop ;
132+ v_random.InitSeed(test_runner'instance_name );
133+ for i in 0 to 127 loop
134+ check_equal(sv_string_slv_dict.Get (to_string(i)), v_random.RandSlv(32 ));
135+ end loop ;
136+ check_equal(sv_string_slv_dict.Count, 128 );
82137 elsif run(" Test that dictionary data can be cleared" ) then
138+ -- Integer_Slv_Dict
139+ for i in 0 to 127 loop
140+ sv_int_slv_dict.Set(i, std_logic_vector (to_unsigned (i, 32 )));
141+ end loop ;
142+ check_equal(sv_int_slv_dict.Count, 128 );
143+ sv_int_slv_dict.Clear;
144+ check_equal(sv_int_slv_dict.Count, 0 );
145+ -- String_Slv_Dict
83146 for i in 0 to 127 loop
84- sv_dict .Set(i , std_logic_vector (to_unsigned (i, 32 )));
147+ sv_string_slv_dict .Set(to_string(i) , std_logic_vector (to_unsigned (i, 32 )));
85148 end loop ;
86- check_equal(sv_dict .Count, 128 );
87- sv_dict .Clear;
88- check_equal(sv_dict .Count, 0 );
149+ check_equal(sv_string_slv_dict .Count, 128 );
150+ sv_string_slv_dict .Clear;
151+ check_equal(sv_string_slv_dict .Count, 0 );
89152 end if ;
90153 end loop ;
91154 test_runner_cleanup(runner);
0 commit comments