예제 #1
0
        public void FirstTest()
        {
            TinaValidator validator = new TinaValidator(FirstTestLogic());
            //--------------------------------------------------
            //Run Start
            bool result;

            string[] files = Directory.GetFiles(NumberFilePath);
            for (int i = 0; i < files.Length; i++)
            {
                using (FileStream fs = new FileStream(files[i], FileMode.Open))
                {
                    using StreamReader sr = new StreamReader(fs);
                    string             s     = sr.ReadToEnd();
                    List <ObjectConst> thing = s.ToObjectList();
                    result = validator.Validate(thing);
                }
                if (i == 0)
                {
                    Assert.IsTrue(result);
                }
                else
                {
                    Assert.IsFalse(result);
                }
            }

            for (int i = 0; i < 100; i++)
            {
                List <ObjectConst> list = validator.CreateRandom();
                TestContext.WriteLine(list.ForEachToString());
                result = validator.Validate(list);
                TestContext.WriteLine("");
                Assert.IsTrue(result);
            }

            validator.Logic.Save(Path.Combine(SaveLoadPath, "Main1.json"));
            return;
        }
예제 #2
0
        public void TestParse()
        {
            ValidateLogic VL = new ValidateLogic();
            UnitSet       us = new UnitSet(CharUnits.AtoZ);

            us.Units.Add(CharUnits.atoz);
            VL.StartNode = us;
            us.NextNode  = EndNode.Instance;

            string testString = "DJ";

            TinaValidator tv     = new TinaValidator(VL);
            bool          result = tv.Validate(testString.ToObjectList());

            TestContext.WriteLine(result.ToString());
            TestContext.WriteLine(tv.CreateRandomToString());
        }
예제 #3
0
        public void RerunRecords()
        {
            ValidateLogic VL       = JsonLogic();
            string        fullName = "BigJson-0255";

            string recordNeedRun = "02-25-00-13-30-0029";
            //fullName = $"TestRecord-{DateTime.Now.Year}-{recordNeedRun}";
            List <char>        ol  = null;
            List <ObjectConst> oll = new List <ObjectConst>();

            using (FileStream fs = new FileStream(Path.Combine(RandomJsonPath, $"{fullName}.json"), FileMode.Open))
            {
                StreamReader          sr  = new StreamReader(fs);
                JsonSerializerOptions jso = new JsonSerializerOptions {
                    WriteIndented = true, MaxDepth = 128
                };
                jso.Converters.Add(new Aritiafel.Locations.StorageHouse.DefaultJsonConverterFactory());
                //ol = (List<char>)JsonSerializer.Deserialize(sr.ReadToEnd(), typeof(List<char>));
                string s = sr.ReadToEnd();
                JsonSerializer.Deserialize(s, typeof(object), jso);
                oll = s.ToObjectList();
                sr.Close();
            }


            if (ol != null)
            {
                for (int i = 0; i < ol.Count; i++)
                {
                    oll.Add(new CharConst(ol[i]));
                }
            }

            TinaValidator validator = new TinaValidator(VL);

            TestContext.WriteLine(validator.Validate(oll).ToString());
        }
예제 #4
0
        public void JsonTest()
        {
            ValidateLogic VL = JsonLogic();

            TinaValidator validator = new TinaValidator(VL);

            VL.Save(Path.Combine(SaveLoadPath, "JSONTest.json"));
            string[] files = Directory.GetFiles(RandomJsonPath);
            foreach (string file in files)
            {
                File.Delete(file);
            }
            for (int i = 0; i < 1000; i++)
            {
                List <ObjectConst> ol;
                ol = validator.CreateRandom();
                string s      = ol.ForEachToString();
                byte[] buffer = System.Text.Encoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.UTF8, System.Text.Encoding.Unicode.GetBytes(s));
                s = System.Text.Encoding.UTF8.GetString(buffer);
                if (ol.Count > 10000)
                {
                    using (FileStream fs = new FileStream(Path.Combine(RandomJsonPath, $"BigJson-{i.ToString("0000")}.json"), FileMode.Create))
                    {
                        BinaryWriter bw = new BinaryWriter(fs);
                        bw.Write(buffer);
                        bw.Close();
                    }
                    TestContext.WriteLine($"{i} ObjectCount: {ol.Count}");
                }

                try
                {
                    JsonSerializer.Deserialize(s, typeof(object));
                }
                catch (Exception ex)
                {
                    TestContext.WriteLine("Wrong Happen:" + i);
                    TestContext.WriteLine("Message:" + ex.Message);
                    TestContext.WriteLine(s);
                    using (FileStream fs = new FileStream(Path.Combine(WrongRecordsPath, $"DeserializeRecord-{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}-{i.ToString("0000")}.json"), FileMode.Create))
                    {
                        StreamWriter sw = new StreamWriter(fs);
                        sw.WriteLine($"Message: {ex.Message}");
                        sw.WriteLine("Content:");
                        sw.Write(s);
                        sw.Close();
                    }
                }

                if (!validator.Validate(ol))
                {
                    TestContext.WriteLine("-----------------------------");
                    TestContext.WriteLine("Wrong happen: " + i);
                    TestContext.WriteLine(ol.ForEachToString());
                    TestContext.WriteLine("TotalObjectCount:" + ol.Count);
                    //TestContext.WriteLine("Error Node:" + validator.ErrorNode.ID);
                    //TestContext.WriteLine("Node Type:" + validator.ErrorNode.GetType().Name);
                    string ss = "";
                    for (int j = (int)validator.LongerErrorLocation - 5; j < validator.LongerErrorLocation + 5; j++)
                    {
                        if (j >= 0 && j < ol.Count)
                        {
                            ss += ol[j].ToString();
                        }
                        if (j == validator.LongerErrorLocation)
                        {
                            ss += "!";
                        }
                    }
                    TestContext.WriteLine("NearbyString:" + ss);
                    TestContext.WriteLine("Error Location:" + validator.LongerErrorLocation);
                    JsonSerializerOptions jso = new JsonSerializerOptions
                    {
                        WriteIndented = true, MaxDepth = 128
                    };
                    jso.Converters.Add(new Aritiafel.Locations.StorageHouse.DefaultJsonConverterFactory());
                    using (FileStream fs = new FileStream(Path.Combine(WrongRecordsPath, $"TestRecord-{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}-{i.ToString("0000")}.json"), FileMode.Create))
                    {
                        StreamWriter sw = new StreamWriter(fs);
                        sw.Write(JsonSerializer.Serialize(ol, jso));
                        sw.Close();
                    }
                }
            }
            TestContext.WriteLine("Test End");
        }