コード例 #1
0
        // Line format: <level>_<@xref@>_<tag>_<value> (for test's purpose)
        private static int ParseTag(string str, out int tagLevel, out string tagXRef, out string tagName, out string tagValue)
        {
            var strTok = new GEDCOMParser(str, false);

            return(GEDCOMUtils.ParseTag(strTok, out tagLevel, out tagXRef, out tagName, out tagValue));
        }
コード例 #2
0
        public void Test_ParseTag()
        {
            string str;
            int    tagLevel2, res2;
            string tagXRef2, tagName2, tagValue2;

            str  = "0 HEAD";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(0, tagLevel2);
            Assert.AreEqual("", tagXRef2);
            Assert.AreEqual("HEAD", tagName2);
            Assert.AreEqual("", tagValue2);
            Assert.AreEqual(2, res2);

            str  = "0 @SUB1@ SUBM";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(0, tagLevel2);
            Assert.AreEqual("SUB1", tagXRef2);
            Assert.AreEqual("SUBM", tagName2);
            Assert.AreEqual("", tagValue2);
            Assert.AreEqual(3, res2);

            str  = "0 @SUB1@ SUBM testVal";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(0, tagLevel2);
            Assert.AreEqual("SUB1", tagXRef2);
            Assert.AreEqual("SUBM", tagName2);
            Assert.AreEqual("testVal", tagValue2);
            Assert.AreEqual(4, res2);

            str  = "1 SUBM @SUB1@";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(1, tagLevel2);
            Assert.AreEqual("", tagXRef2);
            Assert.AreEqual("SUBM", tagName2);
            Assert.AreEqual("@SUB1@", tagValue2);
            Assert.AreEqual(3, res2);

            str  = "    1 SUBM @SUB1@";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(1, tagLevel2);
            Assert.AreEqual("", tagXRef2);
            Assert.AreEqual("SUBM", tagName2);
            Assert.AreEqual("@SUB1@", tagValue2);
            Assert.AreEqual(3, res2);

            str  = "2 DATE FROM 20 JAN 1979 TO 15 MAY 2012";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(2, tagLevel2);
            Assert.AreEqual("", tagXRef2);
            Assert.AreEqual(GEDCOMTagName.DATE, tagName2);
            Assert.AreEqual("FROM 20 JAN 1979 TO 15 MAY 2012", tagValue2);
            Assert.AreEqual(3, res2);


            str  = "    test test test (FTB line with error)";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual("    test test test (FTB line with error)", tagValue2);
            Assert.AreEqual(-1, res2);

            str  = "        ";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(0, tagLevel2);
            Assert.AreEqual("", tagXRef2);
            Assert.AreEqual("", tagName2);
            Assert.AreEqual("", tagValue2);
            Assert.AreEqual(-2, res2);

            str  = "";
            res2 = GEDCOMUtils.ParseTag(str, out tagLevel2, out tagXRef2, out tagName2, out tagValue2);
            Assert.AreEqual(-2, res2);
        }