public void ValueParts() { var tokenizer = new RegFileTokenizer(Resources.ValueParts); tokenizer.Read(); // Version tokenizer.Read(); // Key tokenizer.Read(); // Name tokenizer.Read(); // Kind Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(RegTokenType.ValuePart, tokenizer.TokenType); Assert.AreEqual("53,00,74,00,", tokenizer.Value); Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(RegTokenType.Comment, tokenizer.TokenType); Assert.AreEqual("测试多行 + 注释", tokenizer.Value); Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(RegTokenType.ValuePart, tokenizer.TokenType); Assert.AreEqual("72,00,30,00,", tokenizer.Value); Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(RegTokenType.Comment, tokenizer.TokenType); Assert.AreEqual("注释在值内占一行", tokenizer.Value); Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(RegTokenType.ValuePart, tokenizer.TokenType); Assert.AreEqual("00,00,53,00,74,00,72,00,31,00,00,00,00,", tokenizer.Value); Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(RegTokenType.Value, tokenizer.TokenType); Assert.AreEqual("00", tokenizer.Value); }
public void InvalidValue(string content) { content = VERSION_LINE + "@" + content + "\r\n"; var tokenizer = new RegFileTokenizer(content); tokenizer.Read(); // Version tokenizer.Read(); // Name tokenizer.Read(); // Value or Kind }
public void InvalidTopLevel(string content) { content = VERSION_LINE + content + "\r\n"; var tokenizer = new RegFileTokenizer(content); Assert.IsTrue(tokenizer.Read()); tokenizer.Read(); // ref struct cannot used in Assert.ThrowsException }
public string Tokenize() { var t = new RegFileTokenizer(content); var avoidElimination = ""; while (t.Read()) { avoidElimination = t.Value; } return(avoidElimination); }
public void ReadTokens(string content, params RegTokenType[] tokens) { content = VERSION_LINE + content + "\r\n"; var tokenizer = new RegFileTokenizer(content); tokenizer.Read(); foreach (var token in tokens) { Assert.IsTrue(tokenizer.Read()); Assert.AreEqual(token, tokenizer.TokenType); } Assert.IsFalse(tokenizer.Read()); // 检查已经读完了。 }
public void StringEscape() { var content = VERSION_LINE + "@=\"a\\\"b\";注释" + "\r\n"; var tokenizer = new RegFileTokenizer(content); tokenizer.Read(); tokenizer.Read(); tokenizer.Read(); Assert.AreEqual(RegTokenType.Value, tokenizer.TokenType); Assert.AreEqual("a\"b", tokenizer.Value); tokenizer.Read(); Assert.AreEqual(RegTokenType.Comment, tokenizer.TokenType); Assert.AreEqual("注释", tokenizer.Value); }
public RegFileReader(string content) { tokenizer = new RegFileTokenizer(content); }