示例#1
0
        public void testDicts()
        {
            Hashtable map  = new Hashtable();
            Hashtable map2 = new Hashtable();
            ArrayList list = new ArrayList();

            Assert.AreEqual(map, U("}."));      // {}
            map.Add(97, 98);
            map.Add(99, 100);
            Assert.AreEqual(map, U("}(KaKbKcKdu."));               // {97: 98, 99: 100}
            Assert.AreEqual(map, U("(dI97\nI98\nsI99\nI100\ns.")); // {97: 98, 99: 100}
            Assert.AreEqual(map, U("(I97\nI98\nI99\nI100\nd."));   // {97: 98, 99: 100}

            map.Clear();
            map.Add(1, 2);
            map.Add(3, 4);
            map2.Add(5, 6);
            map2.Add(7, 8);
            list.Add(map);
            list.Add(map2);
            Assert.AreEqual(list, U("(lp0\n(dp1\nI1\nI2\nsI3\nI4\nsa(dp2\nI5\nI6\nsI7\nI8\nsa."));                                           // [{1:2, 3:4}, {5:6, 7:8}]
            Assert.AreEqual(list, U("\u0080\u0002]q\u0000(}q\u0001(K\u0001K\u0002K\u0003K\u0004u}q\u0002(K\u0005K\u0006K\u0007K\u0008ue.")); // [{1:2, 3:4}, {5:6, 7:8}]

            map.Clear();
            map2.Clear();
            list.Clear();

            map["abc"] = null;
            Assert.AreEqual(map, U("(dp0\nS'abc'\np1\nNs."));                     // {'abc': None}
            Assert.AreEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001Ns."));  // {'abc': None}
            map["abc"] = 111;
            Assert.AreEqual(map, U("(dp0\nS'abc'\np1\nI111\ns."));                // {'abc': 111}
            Assert.AreEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001Kos.")); // {'abc': 111}
            list.Add(111);
            list.Add(111);
            map["abc"] = list;
            AssertUtils.AssertEqual(map, U("(dp0\nS'abc'\np1\n(lp2\nI111\naI111\nas."));                            // {'abc': [111,111]}
            AssertUtils.AssertEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001]q\u0002(KoKoes."));               // {'abc': 111}
            map["abc"] = map2;
            AssertUtils.AssertEqual(map, U("(dp0\nS'abc'\np1\n(dp2\ns."));                                          // {'abc': {} }
            AssertUtils.AssertEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001}q\u0002s."));                     // {'abc': {} }
            map2["def"] = 111;
            AssertUtils.AssertEqual(map, U("(dp0\nS'abc'\np1\n(dp2\nS'def'\np3\nI111\nss."));                       // {'abc': {'def':111}}
            AssertUtils.AssertEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001}q\u0002U\u0003defq\u0003Koss.")); // {'abc': {'def':111}}

            map2["def"] = list;
            AssertUtils.AssertEqual(map, U("(dp0\nS'abc'\np1\n(dp2\nS'def'\np3\n(lp4\nI111\naI111\nass."));                     // {'abc': {'def': [111,111] }}
            AssertUtils.AssertEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001}q\u0002U\u0003defq\u0003]q\u0004(KoKoess.")); // {'abc': {'def': [111,111] }}

            ArrayList list2 = new ArrayList();

            list2.Add(222);
            list2.Add(222);
            map2["ghi"] = list2;
            AssertUtils.AssertEqual(map, U("(dp0\nS'abc'\np1\n(dp2\nS'ghi'\np3\n(lp4\nI222\naI222\nasS'def'\np5\n(lp6\nI111\naI111\nass."));                              // {'abc': {'def': [111,111], ghi: [222,222] }}
            AssertUtils.AssertEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001}q\u0002(U\u0003ghiq\u0003]q\u0004(K\u00deK\u00deeU\u0003defq\u0005]q\u0006(KoKoeus.")); // {'abc': {'def': [111,111], ghi: [222,222] }}

            map2.Clear();
            map2["def"] = list;
            map2["abc"] = list;
            AssertUtils.AssertEqual(map, U("(dp0\nS'abc'\np1\n(dp2\ng1\n(lp3\nI111\naI111\nasS'def'\np4\ng3\nss."));                           // {'abc': {'def': [111,111], abc: [111,111] }}
            AssertUtils.AssertEqual(map, U("\u0080\u0002}q\u0000U\u0003abcq\u0001}q\u0002(h\u0001]q\u0003(KoKoeU\u0003defq\u0004h\u0003us.")); // {'abc': {'def': [111,111], abc: [111,111] }}
        }