public void TestParseSingleAddressWithoutTerminator()
        {
            IParser parser            = new ChineseAddressParser(CreateParserContext("上海市黄浦区内环南浦大桥立交桥"));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "上海市黄浦区内环南浦大桥", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, "上海市", "黄浦区", null, null, null, null, null, "内环南浦大桥", null);    //TODO: 立交桥

            parser = new ChineseAddressParser(CreateParserContext("地址:杭州市江干区九堡九环路60号(厂房)"));
            prc    = parser.Parse(3);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州市江干区九堡九环路60号(厂房)", 3, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, "杭州市", "江干区", "九堡九环路", "60号", null, null, null, "(厂房)", null);

            parser = new ChineseAddressParser(CreateParserContext("杭州市江干区九堡九环路60号(厂房) 邮编:"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州市江干区九堡九环路60号(厂房)", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, "杭州市", "江干区", "九堡九环路", "60号", null, null, null, "(厂房)", null);

            parser = new ChineseAddressParser(CreateParserContext("地址:杭州红楼大酒店二楼融府中餐厅"));
            prc    = parser.Parse(3);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州红楼大酒店二楼融府中餐厅", 3, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, "杭州", null, null, null, "二楼", null, "红楼大酒店", "融府中餐厅", null);

            parser = new ChineseAddressParser(CreateParserContext("浦东新区红楼大酒店三楼"));
            prc    = parser.Parse(0);
            GeneralParserTest.AssertParseResult(prc[0], "浦东新区红楼大酒店三楼", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, null, "浦东新区", null, null, "三楼", null, "红楼大酒店", null, null);
        }
        public void TestParseNoneAddressText()
        {
            IParser parser            = new ChineseAddressParser(CreateParserContext("这是一个测试"));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(0, prc.Count);
        }
        public void TestParseSingleSpecialAddress()
        {
            IParser parser            = new ChineseAddressParser(CreateParserContext("地址:杭州市江干区九堡九环路60号一号厂房"));
            ParseResultCollection prc = parser.Parse(3);

            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州市江干区九堡九环路60号一号", 3, POSType.D_S);        //TODO: 厂房无法识别
        }
        public void TestParseSingleAddressWithDuplicateCity()
        {
            IParser parser            = new ChineseAddressParser(CreateParserContext("上海市上海市黄浦区外马路1410号"));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "上海市上海市黄浦区外马路1410号", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, "上海市", "黄浦区", "外马路", "1410号", null, null);

            parser = new ChineseAddressParser(CreateParserContext("上海上海市黄浦区外马路1410号"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "上海黄浦区外马路1410号", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, "上海", "黄浦区", "外马路", "1410号", null, null);        //出现两个上海时,以第一个为准
        }
        public void TestParseSingleAddress()
        {
            IParser parser            = new ChineseAddressParser(CreateParserContext("上海市黄浦区外马路1410号"));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "上海市黄浦区外马路1410号", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, "上海市", "黄浦区", "外马路", "1410号", null, null);


            parser = new ChineseAddressParser(CreateParserContext("上海市黄浦区陆家浜路413弄5号702室(金南新苑商务楼)"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "上海市黄浦区陆家浜路413弄5号702室(金南新苑商务楼)", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, "上海市", "黄浦区", "陆家浜路", "5号", null, "702室", null, null, "413弄");


            parser = new ChineseAddressParser(CreateParserContext("中国上海市浦东新区银城中路68号时代金融中心大厦38楼"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "中国上海市浦东新区银城中路68号时代金融中心大厦38楼", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, "中国", null, "上海市", "浦东新区", "银城中路", "68号", "38楼", null, "时代金融中心大厦");

            parser = new ChineseAddressParser(CreateParserContext("杭州市体育场路453号14楼302室"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州市体育场路453号14楼302室", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, "杭州市", null, "体育场路", "453号", "14楼", "302室");

            parser = new ChineseAddressParser(CreateParserContext("地址:杭州市江干区九堡九环路六十号"));
            prc    = parser.Parse(3);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州市江干区九堡九环路六十号", 3, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, "杭州市", "江干区", "九堡九环路", "六十号", null, null);

            parser = new ChineseAddressParser(CreateParserContext("杭州西湖区文二西路2号"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "杭州西湖区文二西路2号", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, "杭州", "西湖区", "文二西路", "2号", null, null);

            parser = new ChineseAddressParser(CreateParserContext("长乐路460弄10号"));
            prc    = parser.Parse(0);
            Assert.AreEqual(1, prc.Count);
            GeneralParserTest.AssertParseResult(prc[0], "长乐路460弄10号", 0, POSType.D_S);
            AssertAddressValue((ChineseAddress)prc[0].Value, null, null, null, null, "长乐路", "10号", null, null, null, null, "460弄");
        }