コード例 #1
0
ファイル: NatTxtGen.cs プロジェクト: zhabis/nfx
        public void PerfFullInfo()
        {
            const int CNT = 1000000;
            var       sw  = Stopwatch.StartNew();

            for (var i = 0; i < CNT; i++)
            {
                var name = NaturalTextGenerator.GenerateFirstName() + " " + NaturalTextGenerator.GenerateLastName();
                var addr = NaturalTextGenerator.GenerateAddressLine();
                var csz  = NaturalTextGenerator.GenerateUSCityStateZip();
            }

            var elapsed = sw.ElapsedMilliseconds;
            var ops     = CNT / (elapsed / 1000d);

            Console.WriteLine("Genereated {0} full infos, in {1:n0} ms at {2:n0} ops/sec", CNT, elapsed, ops);
            Aver.IsTrue(ops > 180000);//180,000 ops/sec
        }
コード例 #2
0
        public void IsOfType()
        {
            Type x = GetType();

            Aver.IsTrue(GetType() == x.IsOfType <GuardTests>());
            Aver.IsTrue(GetType() == x.IsOfType <object>());

            x = typeof(AzosException);

            Aver.IsTrue(typeof(AzosException) == x.IsOfType <Exception>());
            Aver.IsTrue(typeof(AzosException) == x.IsOfType <object>());
            Aver.Throws <CallGuardException>(() => x.IsOfType <GuardTests>());

            x = null;
            Aver.Throws <CallGuardException>(() => x.IsOfType <object>());
            x = typeof(Exception);
            Aver.Throws <CallGuardException>(() => x.IsOfType <AzosException>());
        }
コード例 #3
0
        public void OrderedRegistry_Clear()
        {
            var reg = new OrderedRegistry <OrderedClazz>();

            Aver.IsTrue(reg.Register(new OrderedClazz("Apple", 8, 1)));
            Aver.IsTrue(reg.Register(new OrderedClazz("Banana", -2, 2)));
            Aver.IsFalse(reg.Register(new OrderedClazz("Apple", 22, 3)));

            var ordered = reg.OrderedValues.ToArray();

            Aver.AreEqual(2, ordered.Length);
            Aver.AreEqual("Banana", ordered[0].Name);
            Aver.AreEqual("Apple", ordered[1].Name);

            reg.Clear();
            Aver.AreEqual(0, reg.Count);
            Aver.AreEqual(0, reg.OrderedValues.Count());
        }
コード例 #4
0
        public void GeneralCmdArgs()
        {
            var conf = new CAC(args);

            Aver.AreEqual(@"tool.exe", conf.Root.AttrByIndex(0).ValueAsString());
            Aver.AreEqual(@"c:\input.file", conf.Root.AttrByIndex(1).ValueAsString());
            Aver.AreEqual(@"d:\output.file", conf.Root.AttrByIndex(2).ValueAsString());

            Aver.AreEqual(true, conf.Root["compress"].Exists);
            Aver.AreEqual(100, conf.Root["compress"].AttrByName("level").ValueAsInt());
            Aver.AreEqual("zip", conf.Root["compress"].AttrByName("method").ValueAsString());

            Aver.AreEqual(true, conf.Root["shadow"].Exists);
            Aver.AreEqual("fast", conf.Root["shadow"].AttrByIndex(0).Value);
            Aver.AreEqual(1024, conf.Root["shadow"].AttrByName("swap").ValueAsInt());

            Aver.AreEqual(true, conf.Root["large"].Exists);
        }
コード例 #5
0
        public void CH_EchoTwoCalls()
        {
            var conf = CONFIG1.AsLaconicConfig(handling: ConvertErrorHandling.Throw);

            using (var app = new AzosApplication(null, conf))
            {
                using (var tester = app.GetServiceClientHub().MakeNew <ITesterClient>("/us/east/cle/a/ii/wmed0004"))
                {
                    var arg    = "Abcdefg";
                    var echoed = tester.TestEcho(arg);
                    Aver.AreObjectsEqual(arg, echoed);

                    arg    = "Ze Rozenberg";
                    echoed = tester.TestEcho(arg);
                    Aver.AreObjectsEqual(arg, echoed);
                }
            }
        }
コード例 #6
0
ファイル: JSONToDocExtendedTests.cs プロジェクト: azist/azos
        public void Test_WithVariousNullableStructsDoc_StringMap()
        {
            var d1 = new WithVariousNullableStructsDoc {
                StringMap = new StringMap {
                    { "a", "a value" }
                }
            };
            var json = d1.ToJson(JsonWritingOptions.PrettyPrintRowsAsMap);

            json.See();
            var map = json.JsonToDataObject() as JsonDataMap;

            var d2 = new WithVariousNullableStructsDoc();

            JsonReader.ToDoc(d2, map);

            Aver.AreEqual(d1.StringMap["a"], d2.StringMap["a"]);
        }
コード例 #7
0
ファイル: LaconicTests.cs プロジェクト: sergey-msu/azos
        public void Recursive4StackCleanup()
        {
            var conf = Azos.Conf.LaconicConfiguration.CreateFromString(src1);

            var attr = conf.Root["MyClass"]["data"]["extra"].AttrByName("cycle");

            try
            {
                var v2 = attr.Value;//exception
            }
            catch (Exception error)
            {
                Console.WriteLine("Expected and got: " + error.Message);
            }

            //after exception, stack should cleanup and work again as expected
            Aver.AreEqual("val1", conf.Root["vars"]["var1"].Value);
        }
コード例 #8
0
ファイル: MiscUtilsTest.cs プロジェクト: azist/azos
        public void StringLines()
        {
            var txt =
                @"A,b,
c,d,e
f
";

            Aver.AreEqual("A,b,", txt.ReadLine());

            var lines = txt.SplitLines();

            Aver.AreEqual(4, lines.Length);
            Aver.AreEqual("A,b,", lines[0]);
            Aver.AreEqual("c,d,e", lines[1]);
            Aver.AreEqual("f", lines[2]);
            Aver.AreEqual("", lines[3]);
        }
コード例 #9
0
        public void FID3()
        {
            var CNT = 0xffff * 2;

            for (var c = 0; c < 37; c++)
            {
                var set1 = new FID[CNT];
                var set2 = new FID[CNT];
                for (var i = 0; i < CNT; i++)
                {
                    set1[i] = FID.Generate();
                    set2[i] = FID.Generate();
                }

                Aver.IsFalse(set1.Intersect(set2).Any());
                Console.WriteLine("{0}: Set of {1} FIDs no intersection", c, CNT);
            }
        }
コード例 #10
0
ファイル: MiscUtilsTest.cs プロジェクト: azist/azos
        public void AlignDailyMinutesTests_008()
        {
            var a = new DateTime(1980, 1, 1, 2, 02, 00, DateTimeKind.Utc);
            var b = a.AlignDailyMinutes(300);//5 hours
            var c = new DateTime(1980, 1, 1, 5, 0, 00, DateTimeKind.Utc);

            Aver.AreEqual(c, b);

            a = new DateTime(1980, 1, 1, 18, 02, 00, DateTimeKind.Utc);
            b = a.AlignDailyMinutes(300);//5 h
            c = new DateTime(1980, 1, 1, 20, 0, 00, DateTimeKind.Utc);
            Aver.AreEqual(c, b);

            a = b.AddMinutes(2);
            b = a.AlignDailyMinutes(300);//5 h
            c = new DateTime(1980, 1, 2, 1, 0, 00, DateTimeKind.Utc);
            Aver.AreEqual(c, b);
        }
コード例 #11
0
 public void Test_DocList_4()
 {
     using (var app = new AzosApplication(null, BASE_CONF))
     {
         var doc = new DocList();
         doc.IMin  = 1000;
         doc.DList = new List <object> {
             null, null, null, new DocCompositeField {
                 D1 = new DocDirectField {
                     S1 = "key"
                 }, D2 = new DocDirectField {
                     S1 = "key"
                 }
             }
         };
         Aver.IsNull(doc.Validate(app));
     }
 }
コード例 #12
0
        public void NLSMap_JSONSerializationRoundtrip()
        {
            var content = "{eng: {n: 'Cucumber',d: 'It is green'}, deu: {n: 'Gurke', d: 'Es ist grün'}}";

            var nls = new NLSMap(content);


            var json = nls.ToJson();

            Console.WriteLine(json);

            var nls2 = new NLSMap(json);

            Aver.AreEqual(2, nls2.Count);
            Aver.AreEqual("Cucumber", nls2["eng"].Name);
            Aver.AreEqual("Gurke", nls2["deu"].Name);
            Aver.AreEqual(null, nls["rus"].Name);
        }
コード例 #13
0
ファイル: MiscUtilsTest.cs プロジェクト: azist/azos
        public void ReadWriteLEShortTestStream()
        {
            var ms = new MemoryStream();

            ms.WriteLEShort(789);
            Aver.AreEqual(2, ms.Position);
            Aver.IsTrue((new byte[] { 21, 3 }).MemBufferEquals(ms.ToArray()));

            ms.Position = 0;
            Aver.AreEqual(789, ms.ReadLEShort());

            ms.Position = 0;
            ms.WriteLEUShort(789);
            Aver.AreEqual(2, ms.Position);
            Aver.IsTrue((new byte[] { 21, 3 }).MemBufferEquals(ms.ToArray()));
            ms.Position = 0;
            Aver.AreEqual(789, ms.ReadLEUShort());
        }
コード例 #14
0
ファイル: LookAheadEnumerableTest.cs プロジェクト: zhabis/nfx
        public void SingleEnumerable_AsEnumerable()
        {
            var enumerator = " ".AsLookAheadEnumerable().GetEnumerator();

            Aver.Throws <InvalidOperationException>(() =>
            {
                var current = enumerator.Current;
            });
            Aver.IsTrue(enumerator.MoveNext());
            Aver.AreEqual(enumerator.Current, ' ');
            Aver.IsFalse(enumerator.MoveNext());
            enumerator.Reset();
            Aver.Throws <InvalidOperationException>(() =>
            {
                var current = enumerator.Current;
            });
            Aver.IsTrue(enumerator.MoveNext());
        }
コード例 #15
0
        public void Scope_Insensitive()
        {
            var scope = new SealedString.Scope();

            var s1 = scope.Seal("Lenin");
            var s2 = scope.Seal("has");
            var s3 = scope.Seal("LeNIN");
            var s4 = scope.Seal("LeNeN");

            Aver.AreEqual(s1, s3);
            Aver.AreNotEqual(s1, s2);
            Aver.AreNotEqual(s1, s4);

            Aver.AreEqual(3, scope.Count);
            Aver.AreEqual(s1, scope["LENIN"]);
            Aver.AreEqual(s2, scope["HAS"]);
            Aver.AreEqual(s4, scope["LENEN"]);
        }
コード例 #16
0
        public void CSVFileDestinationStartByConfig1()
        {
            var          TNAME = "UnitTest-" + MethodBase.GetCurrentMethod().Name;
            var          FNAME = TNAME + ".csv.log";
            const string DATE  = "20131012";

            var xml = @"<log>
                      <destination type='NFX.Log.Destinations.CSVFileDestination, NFX'
                                   name='{0}'
                                   path='$(@~path)'
                                   filename='$(::now fmt=yyyyMMdd value={1})-$($name).csv.log'/>
                   </log>".Args(TNAME, DATE);

            var fname = Path.Combine(TEST_DIR, DATE + "-" + FNAME);

            IOMiscUtils.EnsureFileEventuallyDeleted(fname);

            using (var svc = new LSVC())
                using (Scope.OnExit(() => File.Delete(fname)))
                {
                    var cfg = XMLConfiguration.CreateFromXML(xml);
                    cfg.EnvironmentVarResolver = new Vars(new VarsDictionary {
                        { "path", TEST_DIR }
                    });
                    svc.Configure(cfg.Root);

                    svc.Start();

                    svc.Write(new Message {
                        Text = "1 message"
                    });
                    svc.Write(new Message {
                        Text = "2 message"
                    });
                    svc.Write(new Message {
                        Text = "3 message"
                    });

                    svc.WaitForCompleteStop();

                    Aver.IsTrue(File.Exists(fname));
                    Aver.AreEqual(3, File.ReadAllLines(fname).Length);
                }
        }
コード例 #17
0
        public void Basic_ManySequence()
        {
            var sut = new LocalGdidGenerator(NOPApplication.Instance);

            var set = new HashSet <ulong>();

            const int CNT = 100;

            for (var i = 0; i < CNT; i++)
            {
                var got = sut.TryGenerateManyConsecutiveSequenceIds("a", "a", 16);
                "Start: {0}  count: {1}".SeeArgs(got.StartInclusive, got.Count);
                Aver.AreEqual(16, got.Count);
                Aver.IsTrue(set.Add(got.StartInclusive)); //adding first and last
                Aver.IsTrue(set.Add(got.StartInclusive + (ulong)(got.Count - 1)));
            }

            Aver.AreEqual(CNT * 2, set.Count);
        }
コード例 #18
0
        public void Basic_ManyGdid()
        {
            var sut = new LocalGdidGenerator(NOPApplication.Instance);

            var set = new HashSet <GDID>();

            const int CNT = 100;

            for (var i = 0; i < CNT; i++)
            {
                var got = sut.TryGenerateManyConsecutiveGdids("a", "a", 16);
                Aver.IsNotNull(got);
                Aver.AreEqual(16, got.Length);
                got.See();
                got.ForEach(g => Aver.IsTrue(set.Add(g)));
            }

            Aver.AreEqual(CNT * 16, set.Count);
        }
コード例 #19
0
        public void Basic_OneGdid()
        {
            var sut = new LocalGdidGenerator(NOPApplication.Instance);
            //sut.Era = 39;
            //sut.Authority = 7;

            var set = new HashSet <GDID>();

            const int CNT = 100;

            for (var i = 0; i < CNT; i++)
            {
                var got = sut.GenerateOneGdid("a", "a");
                "{0}  -  {1}".SeeArgs(got, got.ToHexString());
                Aver.IsTrue(set.Add(got));
            }

            Aver.AreEqual(CNT, set.Count);
        }
コード例 #20
0
        public void DebugDestinationWriteTest()
        {
            var TNAME = "TestDest-" + MethodBase.GetCurrentMethod().Name;
            var FNAME = TNAME + ".log";

            var fname = Path.Combine(TEST_DIR, FNAME);

            IOMiscUtils.EnsureFileEventuallyDeleted(FNAME);

            using (var svc = new TSLS())
                using (Scope.OnExit(() => File.Delete(fname)))
                {
                    svc.RegisterDestination(
                        new DebugDestination(TNAME)
                    {
                        FileName = FNAME, Path = TEST_DIR
                    });
                    svc.Start();

                    DateTime now = new DateTime(2013, 1, 2, 3, 4, 5);

                    for (var i = 0; i < 10; i++)
                    {
                        svc.Write(new Message {
                            Text = i.ToString(), TimeStamp = now
                        });
                    }

                    svc.WaitForCompleteStop();

                    Aver.IsTrue(File.Exists(fname));
                    string[] lines = File.ReadAllLines(fname);

                    Aver.AreEqual(10, lines.Length);
                    lines.Select((s, i) =>
                    {
                        Aver.AreEqual(
                            "20130102-030405.000000|   {0}||Debug|{1}||0|".Args(Thread.CurrentThread.ManagedThreadId, i),
                            s);
                        return(0);
                    }).ToArray();
                }
        }
コード例 #21
0
ファイル: JSONToDocExtendedTests.cs プロジェクト: azist/azos
        public void CustomWritableReadable_3()
        {
            var d1 = new CustomDoc3 {
                ID = "meduza3", Data = new CustomStructType[] { new CustomStructType("Custom string 3"), new CustomStructType("Gold for toad") }
            };

            var json = d1.ToJson(JsonWritingOptions.PrettyPrintRowsAsMap);

            json.See();
            var jsonMap = json.JsonToDataObject() as JsonDataMap;

            var d2 = new CustomDoc3();

            JsonReader.ToDoc(d2, jsonMap);

            Aver.AreEqual(d1.ID, d2.ID);
            Aver.AreEqual(d1.Data[0].Text, d2.Data[0].Text);
            Aver.AreEqual(d1.Data[0].Length, d2.Data[0].Length);
        }
コード例 #22
0
        public void NLSMap_Get_Descr()
        {
            var content = "{eng: {n: 'Cucumber',d: 'It is green'}, deu: {n: 'Gurke', d: 'Es ist grün'}}";

            var nls = new NLSMap(content);

            var descr = nls.Get(NLSMap.GetParts.Description);

            Aver.AreEqual("It is green", descr);

            descr = nls.Get(NLSMap.GetParts.Description, "deu");
            Aver.AreEqual("Es ist grün", descr);

            descr = nls.Get(NLSMap.GetParts.Description, "XXX");
            Aver.AreEqual("It is green", descr);

            descr = nls.Get(NLSMap.GetParts.Description, "XXX", dfltLangIso: "ZZZ");
            Aver.IsNull(descr);
        }
コード例 #23
0
        public void NLSMap_Get_Name()
        {
            var content = "{eng: {n: 'Cucumber',d: 'It is green'}, deu: {n: 'Gurke', d: 'Es ist grün'}}";

            var nls = new NLSMap(content);

            var name = nls.Get(NLSMap.GetParts.Name);

            Aver.AreEqual("Cucumber", name);

            name = nls.Get(NLSMap.GetParts.Name, "deu");
            Aver.AreEqual("Gurke", name);

            name = nls.Get(NLSMap.GetParts.Name, "XXX");
            Aver.AreEqual("Cucumber", name);

            name = nls.Get(NLSMap.GetParts.Name, "XXX", dfltLangIso: "ZZZ");
            Aver.IsNull(name);
        }
コード例 #24
0
ファイル: JSONToDocExtendedTests.cs プロジェクト: azist/azos
        public void Test_WithByteArrays_2()
        {
            var d1 = new WithByteArrays {
                Id = "Abc", Array1 = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
            };                                                                                          //written as BASE64

            var json = d1.ToJson();

            json.See();

            var d2 = JsonReader.ToDoc <WithByteArrays>(json);

            Aver.AreEqual("Abc", d2.Id);
            Aver.IsNotNull(d2.Array1);

            d2.Array1.See();

            Aver.AreArraysEquivalent(d1.Array1, d2.Array1);
        }
コード例 #25
0
ファイル: MiscUtilsTest.cs プロジェクト: azist/azos
        public void ComposeURLQueryString_NullOrEmptyQueryParts()
        {
            var pars = new Dictionary <string, object>
            {
                { "name", null }
            };
            var result = WebUtils.ComposeURLQueryString(pars);

            Aver.AreEqual("name", result);

            pars = new Dictionary <string, object>
            {
                { "name", string.Empty },
            };
            result = WebUtils.ComposeURLQueryString(pars);
            Aver.AreEqual("name=", result);

            pars = new Dictionary <string, object>
            {
                { string.Empty, "ABBA" }
            };
            result = WebUtils.ComposeURLQueryString(pars);
            Aver.AreEqual(string.Empty, result);

            pars = new Dictionary <string, object>
            {
                { "name1", null },
                { "name2", string.Empty },
                { string.Empty, "ABBA" }
            };
            result = WebUtils.ComposeURLQueryString(pars);
            Aver.AreEqual("name1&name2=", result);

            pars = new Dictionary <string, object>
            {
                { "name1", string.Empty },
                { "name2", null },
                { string.Empty, "ABBA" },
                { "name3", "John" }
            };
            result = WebUtils.ComposeURLQueryString(pars);
            Aver.AreEqual("name1=&name2&name3=John", result);
        }
コード例 #26
0
        public static void TASKReturning_TestContractA_TwoWayCall(string CONF_SRC)
        {
            TestServerA.s_Accumulator = 0;

            var conf = LaconicConfiguration.CreateFromString(CONF_SRC);

            using (var app = new AzosApplication(null, conf.Root))
            {
                var cl = new TestContractAClient(app.Glue, app.ConfigRoot.AttrByName("cs").Value);

                var call = cl.Async_Method1(12);
                var task = call.AsTaskReturning <string>();

                var result = task.Result;

                Aver.AreEqual("12", result);
                Aver.AreEqual(12, TestServerA.s_Accumulator);
            }
        }
コード例 #27
0
        public void Exists()
        {
            var root1 = Azos.Conf.LaconicConfiguration.CreateFromString("details { name = 'John Smith'}").Root;
            var root2 = Azos.Conf.LaconicConfiguration.CreateFromString("details {}").Root;

            var node1 = root1.AttrByName("name");
            var node2 = root2.AttrByName("name");

            Aver.IsTrue(ConfigNodeEqualityComparer.Instance.Equals(node1, node1));
            Aver.IsTrue(ConfigNodeEqualityComparer.Instance.Equals(node2, node2));
            Aver.IsFalse(ConfigNodeEqualityComparer.Instance.Equals(node1, node2));
            Aver.IsFalse(ConfigNodeEqualityComparer.Instance.Equals(node2, node1));

            var node3 = root2.AttrByName("name");

            Aver.IsTrue(ConfigNodeEqualityComparer.Instance.Equals(node3, node3));
            Aver.IsTrue(ConfigNodeEqualityComparer.Instance.Equals(node2, node3));
            Aver.IsTrue(ConfigNodeEqualityComparer.Instance.Equals(node3, node2));
        }
コード例 #28
0
        public void List_Add()
        {
            var lst = new EventedList <string, string>("CONTEXT", false);

            var first = true;

            lst.GetReadOnlyEvent = (_) => false;

            lst.ChangeEvent = (l, ct, p, idx, v) =>
            {
                Aver.AreObjectsEqual(EventedList <string, string> .ChangeType.Add, ct);
                Aver.AreObjectsEqual(first ? EventPhase.Before : EventPhase.After, p);
                Aver.AreEqual(-1, idx);
                Aver.AreEqual("a", v);
                first = false;
            };

            lst.Add("a");
        }
コード例 #29
0
        private void testMsgEquWoError(NFX.Log.Message msg, NFX.Log.Message got)
        {
            Aver.IsNotNull(got);
            Aver.AreNotSameRef(msg, got);

            Aver.AreEqual(msg.Guid, got.Guid);
            Aver.AreEqual(msg.RelatedTo, got.RelatedTo);
            Aver.AreEqual(msg.Host, got.Host);
            Aver.AreEqual(msg.TimeStamp, got.TimeStamp);

            Aver.IsTrue(msg.Type == got.Type);
            Aver.AreEqual(msg.Channel, got.Channel);
            Aver.AreEqual(msg.From, got.From);
            Aver.AreEqual(msg.Topic, got.Topic);
            Aver.AreEqual(msg.Text, got.Text);
            Aver.AreEqual(msg.Source, got.Source);
            Aver.AreEqual(msg.Parameters, got.Parameters);
            Aver.AreEqual(msg.ArchiveDimensions, got.ArchiveDimensions);
        }
コード例 #30
0
ファイル: JSONToDocExtendedTests.cs プロジェクト: azist/azos
        public void CustomWritableReadable_2()
        {
            var d1 = new CustomDoc2 {
                ID = "meduza2", Data = new CustomStructType("Custom string 2")
            };

            var json = d1.ToJson(JsonWritingOptions.PrettyPrintRowsAsMap);

            json.See();
            var jsonMap = json.JsonToDataObject() as JsonDataMap;

            var d2 = new CustomDoc2();

            JsonReader.ToDoc(d2, jsonMap);

            Aver.AreEqual(d1.ID, d2.ID);
            Aver.AreEqual(d1.Data.Value.Text, d2.Data.Value.Text);
            Aver.AreEqual(d1.Data.Value.Length, d2.Data.Value.Length);
        }