Example #1
0
        public void MultipleEntriesTest()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = {David A. Aaker},
                                                                                title = {Multivariate statistics}
                                                                            }
                                                                            @book{ baker:1912,
                                                                                author = {David A. Baker},
                                                                                title = {Multivariate statistics 2}
                                                                            }");
            BibtexParser parser = new BibtexParser(tokenizer);
            BibtexFile file = parser.Parse();

            Assert.AreEqual(2, file.Entries.Count);
            Assert.AreEqual("aaker:1912", file.Entries.First().Key);
            Assert.AreEqual("book", file.Entries.First().Type);
            Assert.AreEqual(2, file.Entries.First().Tags.Count);
            Assert.AreEqual("author", file.Entries.First().Tags.First().Key);
            Assert.AreEqual("David A. Aaker", file.Entries.First().Tags.First().Value);
            Assert.AreEqual("title", file.Entries.First().Tags.ToList()[1].Key);
            Assert.AreEqual("Multivariate statistics", file.Entries.First().Tags.ToList()[1].Value);

            Assert.AreEqual("baker:1912", file.Entries.ToList()[1].Key);
            Assert.AreEqual("book", file.Entries.ToList()[1].Type);
            Assert.AreEqual(2, file.Entries.ToList()[1].Tags.Count);
            Assert.AreEqual("author", file.Entries.ToList()[1].Tags.First().Key);
            Assert.AreEqual("David A. Baker", file.Entries.ToList()[1].Tags.First().Value);
            Assert.AreEqual("title", file.Entries.ToList()[1].Tags.ToList()[1].Key);
            Assert.AreEqual("Multivariate statistics 2", file.Entries.ToList()[1].Tags.ToList()[1].Value);
        }
Example #2
0
        public void TestCommaInTagValue()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = {Günther, C.W. and Van Der Aalst, W.M.P.}
                                                                            }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(15, tokens.Count());
            Assert.AreEqual(new At("@"), tokens[0]);
            Assert.AreEqual(new Text("book", 1), tokens[1]);
            Assert.AreEqual(new OpeningBrace("{", 5), tokens[2]);
            Assert.AreEqual(new Text("aaker:1912", 6), tokens[3]);
            Assert.AreEqual(new Comma(",", 17), tokens[4]);

            Assert.AreEqual(new Text("author", 18), tokens[5]);
            Assert.AreEqual(new Equals("=", 107), tokens[6]);
            Assert.AreEqual(new OpeningBrace(" {", 108), tokens[7]);
            Assert.AreEqual(new Text("Günther", 110), tokens[8]);
            Assert.AreEqual(new Comma(",", 117), tokens[9]);
            Assert.AreEqual(new Text("C.W. and Van Der Aalst", 118), tokens[10]);
            Assert.AreEqual(new Comma(",", 141), tokens[11]);
            Assert.AreEqual(new Text("W.M.P.", 142), tokens[12]);
            Assert.AreEqual(new ClosingBrace("}", 149), tokens[13]);

            Assert.AreEqual(new ClosingBrace("}", 150), tokens[14]);
        }
Example #3
0
        public void TestDoubleQuoteDelimiterTags()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), " \"");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(1, tokens.Count());
            Assert.IsTrue(tokens[0].GetType() == typeof(ValueQuote));
        }
Example #4
0
        public void FuzzyMiningTestFileTest()
        {
            using (StreamReader reader = new StreamReader("Test Files\\Fuzzy Mining.bib"))
            {
                Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), reader.ReadToEnd());
                BibtexParser parser = new BibtexParser(tokenizer);
                BibtexFile file = parser.Parse();

                Assert.AreEqual(3, file.Entries.Count);
            }
        }
Example #5
0
        public void BracesInValueTest()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = {David A. ()ker},
                                                                            }");
            BibtexParser parser = new BibtexParser(tokenizer);
            BibtexFile file = parser.Parse();

            Assert.AreEqual(1, file.Entries.Count);
            Assert.AreEqual("aaker:1912", file.Entries.First().Key);
            Assert.AreEqual("book", file.Entries.First().Type);
            Assert.AreEqual(1, file.Entries.First().Tags.Count);
            Assert.AreEqual("author", file.Entries.First().Tags.First().Key);
            Assert.AreEqual("David A. ()ker", file.Entries.First().Tags.First().Value);
        }
Example #6
0
        public void CommaInTagValueParseTest()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = {Günther, C.W. and Van Der Aalst, W.M.P.}
                                                                            }");

            BibtexParser parser = new BibtexParser(tokenizer);
            BibtexFile file = parser.Parse();

            Assert.AreEqual(1, file.Entries.Count);
            Assert.AreEqual("aaker:1912", file.Entries.First().Key);
            Assert.AreEqual("book", file.Entries.First().Type);
            Assert.AreEqual(1, file.Entries.First().Tags.Count);
            Assert.AreEqual("author", file.Entries.First().Tags.First().Key);
            Assert.AreEqual("Günther, C.W. and Van Der Aalst, W.M.P.", file.Entries.First().Tags.First().Value);
        }
Example #7
0
        public void TestBracesInTagValue()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = { tes(;)est }
                                                                            }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(11, tokens.Count());
            Assert.AreEqual(new At("@"), tokens[0]);
            Assert.AreEqual(new Text("book", 1), tokens[1]);
            Assert.AreEqual(new OpeningBrace("{", 5), tokens[2]);
            Assert.AreEqual(new Text("aaker:1912", 6), tokens[3]);
            Assert.AreEqual(new Comma(",", 17), tokens[4]);

            Assert.AreEqual(new Text("author", 18), tokens[5]);
            Assert.AreEqual(new Equals("=", 107), tokens[6]);
            Assert.AreEqual(new OpeningBrace(" {", 108), tokens[7]);
            Assert.AreEqual(new Text("tes(;)est", 110), tokens[8]);
            Assert.AreEqual(new ClosingBrace("}", 121), tokens[9]);

            Assert.AreEqual(new ClosingBrace("}", 122), tokens[10]);
        }
Example #8
0
        public void SimpleParserWithDoubleQuoteTest()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = ""David A. Aaker""
                                                                              }");
            BibtexParser parser = new BibtexParser(tokenizer);
            BibtexFile file = parser.Parse();

            Assert.AreEqual(1, file.Entries.Count);
            Assert.AreEqual("aaker:1912", file.Entries.First().Key);
            Assert.AreEqual("book", file.Entries.First().Type);
            Assert.AreEqual(1, file.Entries.First().Tags.Count);
            Assert.AreEqual("author", file.Entries.First().Tags.First().Key);
            Assert.AreEqual("David A. Aaker", file.Entries.First().Tags.First().Value);
        }
Example #9
0
        public void ParseStringDefinitionsTest()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"
                                                                            @String{pub-ACM = ""ACM Press""}
                                                                            @book{ aaker:1912,
                                                                                author = { tes(;)est }
                                                                            }");
            BibtexParser parser = new BibtexParser(tokenizer);
            BibtexFile file = parser.Parse();

            Assert.IsTrue(file.StringDefinitions.ContainsKey("pub-ACM"));
            Assert.AreEqual("ACM Press", file.StringDefinitions["pub-ACM"]);

            Assert.AreEqual(1, file.Entries.Count);
            Assert.AreEqual("aaker:1912", file.Entries.First().Key);
            Assert.AreEqual("book", file.Entries.First().Type);
        }
Example #10
0
        public void TestTokenizerSimple()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), "@book{ }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(4, tokens.Count());
            Assert.AreEqual(new At("@"), tokens[0]);
            Assert.AreEqual(new Text("book", 1), tokens[1]);
            Assert.AreEqual(new OpeningBrace("{", 5), tokens[2]);
            Assert.AreEqual(new ClosingBrace(" }" ,6), tokens[3]);
        }
Example #11
0
        public void TestTokenizerMultipleTags()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = {David A. Aaker},
                                                                                title = {Multivariate Analysis in Marketing}
                                                                            }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(17, tokens.Count());
            Assert.AreEqual(new At("@"), tokens[0]);
            Assert.AreEqual(new Text("book", 1), tokens[1]);
            Assert.AreEqual(new OpeningBrace("{", 5), tokens[2]);
            Assert.AreEqual(new Text("aaker:1912", 6), tokens[3]);
            Assert.AreEqual(new Comma(",", 17), tokens[4]);

            Assert.AreEqual(new Text("author", 18), tokens[5]);
            Assert.AreEqual(new Equals("=", 107), tokens[6]);
            Assert.AreEqual(new OpeningBrace(" {", 108), tokens[7]);
            Assert.AreEqual(new Text("David A. Aaker", 110), tokens[8]);
            Assert.AreEqual(new ClosingBrace("}", 124), tokens[9]);
            Assert.AreEqual(new Comma(",", 125), tokens[10]);

            Assert.AreEqual(new Text("title", 126), tokens[11]);
            Assert.AreEqual(new Equals("=", 214), tokens[12]);
            Assert.AreEqual(new OpeningBrace(" {", 215), tokens[13]);
            Assert.AreEqual(new Text("Multivariate Analysis in Marketing", 217), tokens[14]);
            Assert.AreEqual(new ClosingBrace("}", 251), tokens[15]);

            Assert.AreEqual(new ClosingBrace("}", 252), tokens[16]);
        }
Example #12
0
        public void TestTokenizerKey()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), "@book{ aaker:1912, }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(6, tokens.Count());
            Assert.AreEqual(new At("@"), tokens[0]);
            Assert.AreEqual(new Text("book", 1), tokens[1]);
            Assert.AreEqual(new OpeningBrace("{", 5), tokens[2]);
            Assert.AreEqual(new Text(" aaker:1912", 6), tokens[3]);
            Assert.AreEqual(new Comma(",", 17), tokens[4]);
            Assert.AreEqual(new ClosingBrace(" }", 18), tokens[5]);
        }
Example #13
0
        public void TestTokenizerFullItemWithQuote()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = ""David A. Aaker""
                                                                            }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(11, tokens.Count());
            Assert.AreEqual(new At("@"), tokens[0]);
            Assert.AreEqual(new Text("book", 1), tokens[1]);
            Assert.AreEqual(new OpeningBrace("{", 5), tokens[2]);
            Assert.AreEqual(new Text("aaker:1912", 6), tokens[3]);
            Assert.AreEqual(new Comma(",", 17), tokens[4]);
            Assert.AreEqual(new Text("author", 18), tokens[5]);
            Assert.AreEqual(new Equals("=", 107), tokens[6]);
            Assert.IsTrue(tokens[7].GetType() == typeof(ValueQuote));
            Assert.AreEqual(new Text("David A. Aaker", 110), tokens[8]);
            Assert.IsTrue(tokens[9].GetType() == typeof(ValueQuote));
            Assert.AreEqual(new ClosingBrace("}", 125), tokens[10]);
        }
Example #14
0
        public void TestTokenizer1()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), "test");

            Assert.AreEqual(new Text("test"),tokenizer.NextToken());
        }
Example #15
0
        public void TestStringValue()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"
                                                                            @String{pub-ACM                 = ""ACM Press""}
                                                                            @book{ aaker:1912,
                                                                                author = { tes(;)est }
                                                                            }");
            List<AbstractToken> tokens = tokenizer.GetAllTokens().ToList();

            Assert.AreEqual(20, tokens.Count());
            Assert.IsTrue(tokens[0].GetType() == typeof(At));
            Assert.IsTrue(tokens[1].GetType() == typeof(Text));
            Assert.IsTrue(tokens[2].GetType() == typeof(OpeningBrace));
            Assert.IsTrue(tokens[3].GetType() == typeof(Text));
            Assert.IsTrue(tokens[3].GetValue() == "pub-ACM");
            Assert.IsTrue(tokens[4].GetType() == typeof(Equals));
            Assert.IsTrue(tokens[5].GetType() == typeof(ValueQuote));
            Assert.IsTrue(tokens[6].GetType() == typeof(Text));
            Assert.IsTrue(tokens[6].GetValue() == "ACM Press");
            Assert.IsTrue(tokens[7].GetType() == typeof(ValueQuote));
            Assert.IsTrue(tokens[8].GetType() == typeof(ClosingBrace));
        }
Example #16
0
        public void TestPrevious()
        {
            Tokenizer tokenizer = new Tokenizer(new ExpressionDictionary(), @"@book{ aaker:1912,
                                                                                author = { tes~est }
                                                                            }");

            Assert.Throws<ArgumentOutOfRangeException>(() => tokenizer.GetPreviousCharacters(10));

            tokenizer.NextToken();
            tokenizer.NextToken();
            tokenizer.NextToken();
            tokenizer.NextToken();
            tokenizer.NextToken();
            AbstractToken token = tokenizer.NextToken();

            Assert.AreEqual("   author ", tokenizer.GetPreviousCharacters(10));
        }