File: test_symbol.cpp

package info (click to toggle)
libpog 0.5.3-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 3,644 kB
  • sloc: cpp: 51,038; ansic: 239; makefile: 14; python: 11; sh: 11
file content (57 lines) | stat: -rw-r--r-- 1,589 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <gtest/gtest.h>

#include <pog/symbol.h>

class TestSymbol : public ::testing::Test {};

using namespace pog;

TEST_F(TestSymbol,
Nonterminal) {
	Symbol<int> symbol(42, SymbolKind::Nonterminal, "testing_nonterminal");

	EXPECT_EQ(symbol.get_index(), 42u);
	EXPECT_EQ(symbol.get_name(), "testing_nonterminal");
	EXPECT_FALSE(symbol.is_end());
	EXPECT_TRUE(symbol.is_nonterminal());
	EXPECT_FALSE(symbol.is_terminal());
	EXPECT_FALSE(symbol.has_precedence());
}

TEST_F(TestSymbol,
Terminal) {
	Symbol<int> symbol(42, SymbolKind::Terminal, "testing_terminal");

	EXPECT_EQ(symbol.get_index(), 42u);
	EXPECT_EQ(symbol.get_name(), "testing_terminal");
	EXPECT_FALSE(symbol.is_end());
	EXPECT_FALSE(symbol.is_nonterminal());
	EXPECT_TRUE(symbol.is_terminal());
	EXPECT_FALSE(symbol.has_precedence());
}

TEST_F(TestSymbol,
End) {
	Symbol<int> symbol(42, SymbolKind::End, "testing_end");

	EXPECT_EQ(symbol.get_index(), 42u);
	EXPECT_EQ(symbol.get_name(), "testing_end");
	EXPECT_TRUE(symbol.is_end());
	EXPECT_FALSE(symbol.is_nonterminal());
	EXPECT_FALSE(symbol.is_terminal());
	EXPECT_FALSE(symbol.has_precedence());
}

TEST_F(TestSymbol,
Precedence) {
	Symbol<int> symbol(42, SymbolKind::Terminal, "testing_terminal");
	symbol.set_precedence(1, Associativity::Right);

	EXPECT_EQ(symbol.get_index(), 42u);
	EXPECT_EQ(symbol.get_name(), "testing_terminal");
	EXPECT_FALSE(symbol.is_end());
	EXPECT_FALSE(symbol.is_nonterminal());
	EXPECT_TRUE(symbol.is_terminal());
	EXPECT_TRUE(symbol.has_precedence());
	EXPECT_EQ(symbol.get_precedence(), (Precedence{1, Associativity::Right}));
}