예제 #1
0
        public void FirstOrAnyOrDefault()
        {
            var data = new [] { new Tezt {
                                    A = 0, B = "Car", C = 12.1d
                                },
                                new Tezt {
                                    A = 2, B = "Tzar", C = -21.7d
                                },
                                new Tezt {
                                    A = -3, B = "Zuma", C = 10000d
                                }, };

            var m = data.FirstOrAnyOrDefault(elm => elm.B == "Tzar");

            Aver.AreEqual(2, m.A);

            m = data.FirstOrAnyOrDefault(elm => elm.B == "Sidor");
            Aver.AreEqual(0, m.A);

            data = null;
            m    = data.FirstOrAnyOrDefault(elm => elm.B == "Sidor");
            Aver.IsNull(m);

            data = new Tezt[0];
            m    = data.FirstOrAnyOrDefault(elm => elm.B == "Sidor");
            Aver.IsNull(m);
        }
예제 #2
0
        public void Test_Roundtrip()
        {
            var d = new Tezt
            {
                C1 = "{r: {a:1, b:2}}",
                C2 = null
            };

            Aver.IsNull(d.Validate());

            var json = JsonWriter.Write(d, JsonWritingOptions.PrettyPrintRowsAsMap);

            json.See();

            var got = JsonReader.ToDoc <Tezt>(json);

            Aver.AreEqual(1, got.C1.Node.Of("a").ValueAsInt());
            Aver.AreEqual(2, got.C1.Node.Of("b").ValueAsInt());
        }
예제 #3
0
        public void Test_Validation003()
        {
            var d = new Tezt
            {
                F1 = new Atom(0xfffff),
                F2 = Atom.Encode("a"),
                F3 = Atom.Encode("ab"),
                F4 = Atom.Encode("abcd"),
            };

            var state = d.Validate(new ValidState(null, ValidErrorMode.Batch));

            Aver.IsTrue(state.HasErrors);

            var batch = state.Error as ValidationBatchException;

            Aver.IsNotNull(batch);

            var errors = batch.Batch.OfType <FieldValidationException>();

            errors.See();

            Aver.AreEqual(3, errors.Count());

            Aver.IsTrue(errors.First(e => e.FieldName.EqualsOrdSenseCase("F1")).ClientMessage.Contains("Invalid"));
            Aver.IsTrue(errors.First(e => e.FieldName.EqualsOrdSenseCase("F3")).ClientMessage.Contains("shorter"));
            Aver.IsTrue(errors.First(e => e.FieldName.EqualsOrdSenseCase("F4")).ClientMessage.Contains("exceeds"));

            d.F2 = new Atom();

            state = d.Validate(new ValidState(null, ValidErrorMode.Batch));
            Aver.IsTrue(state.HasErrors);

            batch = state.Error as ValidationBatchException;
            Aver.IsNotNull(batch);

            errors = batch.Batch.OfType <FieldValidationException>();

            errors.See();

            Aver.AreEqual(4, errors.Count());
            Aver.IsTrue(errors.First(e => e.FieldName.EqualsOrdSenseCase("F2")).ClientMessage.Contains("required"));
        }
예제 #4
0
        public void Test_FullCycle()
        {
            var d = new Tezt
            {
                C1 = "{r: {a:1, b:2}}",
                C2 = "{r: {a:-1, b:-2}}"
            };

            var json = JsonWriter.Write(d, JsonWritingOptions.PrettyPrintRowsAsMap);

            json.See();

            var got = JsonReader.ToDoc <Tezt>(json);

            var n1 = got.C1.Node;

            Aver.AreEqual(1, got.C1.Node.Of("a").ValueAsInt());
            Aver.AreEqual(2, got.C1.Node.Of("b").ValueAsInt());
            Aver.AreSameRef(n1, got.C1.Node);

            got.C1.Content = "{r: {a:10, b:20}}";
            var n2 = got.C1.Node;

            Aver.AreNotSameRef(n1, n2);
            Aver.AreSameRef(n2, got.C1.Node);

            got.C1.Node = "r{z=900}".AsLaconicConfig();
            var n3 = got.C1.Node;

            Aver.AreNotSameRef(n2, n3);
            Aver.AreEqual(900, got.C1.Node.Of("z").ValueAsInt());

            Aver.AreEqual(-1, got.C2.Node.Of("a").ValueAsInt());
            Aver.AreEqual(-2, got.C2.Node.Of("b").ValueAsInt());

            got.See();
        }
예제 #5
0
        public void FirstOrAnyOrDefault()
        {
            var data = new []{ new Tezt{A=0, B="Car", C=12.1d},
                             new Tezt{A=2, B="Tzar", C=-21.7d},
                             new Tezt{A=-3, B="Zuma", C=10000d},
                           };

              var m = data.FirstOrAnyOrDefault(elm => elm.B=="Tzar");
              Assert.AreEqual(2, m.A);

              m = data.FirstOrAnyOrDefault(elm => elm.B=="Sidor");
              Assert.AreEqual(0, m.A);

              data = null;
              m = data.FirstOrAnyOrDefault(elm => elm.B=="Sidor");
              Assert.IsNull(m);

              data = new Tezt[0];
              m = data.FirstOrAnyOrDefault(elm => elm.B=="Sidor");
              Assert.IsNull(m);
        }