示例#1
0
    void TestNullArray()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        Is(dc.Compare(null, new[] { 1, 2 }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 0, 2 }) });
        Is(dc.Compare(new[] { null, "b" }, new[] { "a", "b" }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 2, 2 }), new PathEntry(1) });
    }
示例#2
0
    void TestArray()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        Is(dc.Compare(new[] { 1, 2 }, new[] { 1, 2 }, out path), DeepCmp.Result.Eq);
        Is(path, null);
        Is(dc.Compare(new[] { 1, 2 }, new[] { 1, 3 }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 2, 2 }), new PathEntry(2) });
        Is(dc.Compare(new[] { 1, 2 }, new[] { 2, 2 }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 2, 2 }), new PathEntry(1) });
    }
示例#3
0
    void TestFields()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        Is(dc.Compare(new A(1, null), new A(1, null), out path), DeepCmp.Result.Eq);
        Is(path, null);
        Is(dc.Compare(new A(1, null), new A(2, null), out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 2, 2 }), new PathEntry(1) });
        Is(dc.Compare(new A(1, new A(2, null)), new A(1, new A(2, null)), out path), DeepCmp.Result.Eq);
        Is(path, null);
        Is(dc.Compare(new A(1, new A(2, null)), new A(1, new A(3, null)), out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 2, 2 }), new PathEntry(2, new[] { 2, 2 }), new PathEntry(3) });
    }
示例#4
0
    void TestNullScalar()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        Is(dc.Compare("a", null, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new PathEntry[] { new PathEntry {
                                             Idx = 0
                                         } });
        Is(dc.Compare(null, "b", out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new PathEntry[] { new PathEntry {
                                             Idx = 0
                                         } });
        Is(dc.Compare(null, null, out path), DeepCmp.Result.Eq);
        IsDeeply(path, null);
    }
示例#5
0
    void TestNullDic()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        Is(dc.Compare(null, new Dictionary <string, string> {
            { "a", "b" }
        }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 0, 1 }) });
        Is(dc.Compare(new Dictionary <string, string> {
            { "a", null }
        }, new Dictionary <string, string> {
            { "a", "b" }
        }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 1, 1 }), new PathEntry(1) });
    }
示例#6
0
    string Helper(object l, object r)
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        dc.Compare(l, r, out path);
        //        Dump("path",path);
        var sw = new StringWriter();

        sw.NewLine = "\r\n";
        var cw  = new YAMLCommentWriter(sw, null);
        var dic = new OrderedDictionary {
            { "a", "blah" }, { "actual", l }, { "expected", r }
        };

        cw.WriteComment(0, dic, path, null);
        return(sw.ToString());
    }
示例#7
0
    void TestNest()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;
        var a = new A(1, null);

        a.Aref = a;
        var b = new A(1, null);

        b.Aref = b;
        Is(dc.Compare(a, b, out path), DeepCmp.Result.Eq);
        Is(path, null);
        // 'got' and 'expected' referring to each other
        a.Aref = b;
        b.Aref = a;
        Is(dc.Compare(a, b, out path), DeepCmp.Result.Eq);
        Is(path, null);
        a.B = 2;
        Is(dc.Compare(a, b, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new[] { 2, 2 }), new PathEntry(1) });
    }
示例#8
0
文件: tap.cs 项目: am11/TAP.Net
        static bool IsDeeplyCommon(object got, object expected, string name)
        {
            List <PathEntry> path;

            DeepCmp.Result res  = new DeepCmp(BlackBoxTypes).Compare(got, expected, out path);
            bool           bres = res == DeepCmp.Result.Eq;

            using (new WithInvariantCulture()) {
                lock (WriteLock) {
                    ReportOkness(name, bres);
                    if (!bres || Verbose >= 4)
                    {
                        var comdic = MkCommentDic(bres, name, null, GetStackFrame());
                        comdic.Add("actual", got);
                        comdic.Add("expected", expected);
                        WriteComment(comdic, path, name);
                    }
                }
            }
            TimerReset();
            return(bres);
        }
示例#9
0
    void TestDic()
    {
        var dc = new DeepCmp();
        List <PathEntry> path;

        Is(dc.Compare(new Dictionary <int, int> {
            { 1, 2 }
        }, new SortedDictionary <int, int> {
            { 1, 2 }
        }, out path), DeepCmp.Result.Eq);
        Is(path, null);
        Is(dc.Compare(new Dictionary <int, int> {
            { 1, 2 }
        }, new SortedDictionary <int, int> {
            { 1, 3 }
        }, out path), DeepCmp.Result.ValNe);
        IsDeeply(path, new[] { new PathEntry(0, new int[] { 1, 1 }), new PathEntry(1) });
        Is(dc.Compare(new Dictionary <int, int> {
            { 1, 2 }, { 0, 1 }
        }, new SortedDictionary <int, int> {
            { 0, 1 }, { 2, 3 }
        }, out path), DeepCmp.Result.KeyNe);
        IsDeeply(path, new[] { new PathEntry(0, new int[] { 2, 2 }), new PathEntry(2) });
    }