예제 #1
0
		public void IncrementsOffsetCorrectlyWithAnotherReader2()
		{
			const string input = @"test1 <a href=""foo"">testlink</a> test2 test3";

			CharFilter filter = new HTMLStripCharFilter(CharReader.Get(new StringReader(input)));
			Tokenizer t = new Tokenizer(filter);

			string token = string.Empty;
			List<Token> results = new List<Token>();

			t.NextToken(out token);
			Assert.Equal(0, filter.CorrectOffset(t.Offset));
			Assert.Equal(5, t.LengthInSource);

			t.NextToken(out token);
			Assert.Equal(20, filter.CorrectOffset(t.Offset));
			Assert.Equal(8, t.LengthInSource);

			t.NextToken(out token);
			Assert.Equal(33, filter.CorrectOffset(t.Offset));
			Assert.Equal(5, t.LengthInSource);

			t.NextToken(out token);
			Assert.Equal(39, filter.CorrectOffset(t.Offset));
			Assert.Equal(5, t.LengthInSource);
		}
		public void doTestOffsets(String input)
		{
			var reader = new HTMLStripCharFilter(CharReader.Get(new StringReader(input)));
			int ch = 0;
			int off = 0; // offset in the reader
			int strOff = -1; // offset in the original string
			while ((ch = reader.Read()) != -1)
			{
				var correctedOff = reader.CorrectOffset(off);

				if (ch == 'X')
				{
					strOff = input.IndexOf('X', strOff + 1);
					assertEquals(strOff, correctedOff);
				}

				off++;
			}
		}