Пример #1
0
    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);
    }
Пример #2
0
    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
    }
Пример #3
0
    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
    }
Пример #4
0
    public string Tokenize()
    {
        var t = new RegFileTokenizer(content);
        var avoidElimination = "";

        while (t.Read())
        {
            avoidElimination = t.Value;
        }

        return(avoidElimination);
    }
Пример #5
0
    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());         // 检查已经读完了。
    }
Пример #6
0
    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);
    }
Пример #7
0
 public RegFileReader(string content)
 {
     tokenizer = new RegFileTokenizer(content);
 }