示例#1
0
        public void DefineString_Array()
        {
            var abc = new AbcFile();
            var arr = new[] { "", "aaa", "aa", "aaa", "aa" };

            for (int i = 0; i < arr.Length; ++i)
            {
                var s  = arr[i];
                var c1 = abc.DefineString(s);
                var c2 = abc.DefineString(s);
                Assert.AreSame(c1, c2, "#A" + i);
            }
        }
示例#2
0
        public void TestStringPool()
        {
            var abc = new AbcFile();

            for (int i = 0; i < 10; ++i)
            {
                var c1 = abc.DefineString("name" + i);
                var c2 = abc.DefineString("name" + i);
                Assert.IsTrue(ReferenceEquals(c1, c2));

                c1 = abc.ImportConst(c1);
                c2 = abc.ImportConst(c2);
                Assert.IsTrue(ReferenceEquals(c1, c2));
            }
        }
示例#3
0
        public void DefineString_Empty()
        {
            var abc = new AbcFile();
            var c1  = abc.DefineString("");

            Assert.AreEqual(1, c1.Index, "#1");
        }
示例#4
0
        public void ImportString1()
        {
            var abc1 = new AbcFile();
            var c1 = abc1.DefineString("aaa");

            var abc2 = new AbcFile();
            var c2 = abc2.ImportConst(c1);

            Assert.AreEqual(c1.Index, c2.Index, "#1");
            Assert.AreEqual(c1.Value, c2.Value, "#2");
        }
示例#5
0
        public AbcMethod GetProperty(AbcMultiname prop)
        {
            if (prop == null)
            {
                throw new ArgumentNullException("prop");
            }

            var m = _abc.DefineMethod(
                Sig.@global(AvmTypeCode.Object),
                code =>
            {
                code.Getlex(prop);
                code.ReturnValue();
            });

#if DEBUG
            m.Name = _abc.DefineString("get_" + prop.NameString);
#endif

            return(m);
        }