home *** CD-ROM | disk | FTP | other *** search
- -- Part of SmallEiffel -- Read DISCLAIMER file -- Copyright (C)
- -- Dominique COLNET and Suzanne COLLIN -- colnet@loria.fr
- --
- class TEST_DICTIONARY
-
- creation {ANY}
- make
-
- feature {ANY}
-
- k1: STRING is "k1";
- k2: STRING is "k2";
- k3: STRING is "k3";
- k4: STRING is "k4";
-
- v1: STRING is "v1";
- v2: STRING is "v2";
- v3: STRING is "v3";
- v4: STRING is "v4";
-
- make is
- local
- d: DICTIONARY[STRING,STRING];
- k, v: STRING;
- i: INTEGER;
- v_list, k_list: ARRAY[STRING];
- do
- !!d.make;
- is_true(d.count = 0);
- is_true(d.empty);
- is_true(not d.has(k1));
-
- d.put(v1,k1);
- is_true(d.count = 1);
- is_true(not d.empty);
- is_true(d.has(k1));
- is_true(not d.has(k2));
- is_true(d @ k1 = v1);
- is_true(d.at(k1) = v1);
- is_true(d.at("k1") = v1);
- is_true(d.item(1) = v1);
-
- d.put(v2,k2);
- is_true(d.count = 2);
- is_true(not d.empty);
- is_true(d.has("k1"));
- is_true(d.has("k2"));
- is_true(not d.has("k3"));
- is_true(d @ k1 = v1);
- is_true(d.at(k2) = v2);
- is_true(d.item(1) = v1 or d.item(1) = v2);
- is_true(d.item(2) = v1 or d.item(2) = v2);
- is_true(d.key_at(v1) = k1);
- is_true(d.key_at(v2) = k2);
-
- d.put(v3,k3);
- d.put(v4,k4);
- from
- v_list := <<v1,v2,v3,v4>>;
- k_list := <<k1,k2,k3,k4>>;
- i := 1;
- invariant
- v_list.count = k_list.count;
- variant
- v_list.count - 1
- until
- i > d.count
- loop
- v := d.item(i);
- k := d.key(i);
- v_list.remove(v_list.fast_index_of(v));
- k_list.remove(k_list.fast_index_of(k));
- i := i + 1
- end;
- is_true(v_list.empty);
- is_true(k_list.empty);
-
- from
- v_list := <<v1,v2,v3,v4>>;
- k_list := <<k1,k2,k3,k4>>;
- i := 1;
- invariant
- v_list.count = k_list.count;
- variant
- v_list.count
- until
- i > d.count
- loop
- v := d.item(i);
- k := d.key_at(v);
- v_list.remove(v_list.fast_index_of(v));
- k_list.remove(k_list.fast_index_of(k));
- i := i + 1
- end;
- is_true(v_list.empty);
- is_true(k_list.empty);
-
- is_true(d.count = 4);
- d.remove(k1);
- is_true(d.count = 3);
- d.remove(k2);
- is_true(d.count = 2);
- d.remove(k3);
- is_true(d.count = 1);
- d.remove(k4);
- is_true(d.count = 0);
- end;
-
- is_true(b: BOOLEAN) is
- do
- cpt := cpt + 1;
- if not b then
- std_output.put_string("TEST_DICTIONARY: ERROR Test # ");
- std_output.put_integer(cpt);
- std_output.put_string("%N");
- else
- -- std_output.put_string("Yes%N");
- end;
- end;
-
- cpt: INTEGER;
-
- end -- TEST_DICTIONARY
-