}
/// @brief checks if the given token is an option with the expected code
- void checkTokenOption(const TokenPtr& token, uint16_t expected_code) {
+ /// and representation type
+ void checkTokenOption(const TokenPtr& token,
+ uint16_t expected_code,
+ TokenOption::RepresentationType expected_repr) {
ASSERT_TRUE(token);
boost::shared_ptr<TokenOption> opt =
boost::dynamic_pointer_cast<TokenOption>(token);
ASSERT_TRUE(opt);
EXPECT_EQ(expected_code, opt->getCode());
+ EXPECT_EQ(expected_repr, opt->getRepresentation());
}
/// @brief check if the given token is relay4 with the expected code
- void checkTokenRelay4(const TokenPtr& token, uint16_t code) {
+ /// and representation type
+ void checkTokenRelay4(const TokenPtr& token,
+ uint16_t expected_code,
+ TokenOption::RepresentationType expected_repr) {
ASSERT_TRUE(token);
boost::shared_ptr<TokenRelay4Option> relay4 =
boost::dynamic_pointer_cast<TokenRelay4Option>(token);
EXPECT_TRUE(relay4);
if (relay4) {
- EXPECT_EQ(code, relay4->getCode());
+ EXPECT_EQ(expected_code, relay4->getCode());
+ EXPECT_EQ(expected_repr, relay4->getRepresentation());
}
}
EXPECT_NO_THROW(parsed_ = eval.parseString("option[123].text == 'foo'"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(3, eval.expression.size());
- checkTokenOption(eval.expression.at(0), 123);
+ checkTokenOption(eval.expression.at(0), 123, TokenOption::TEXTUAL);
}
// Test parsing of an option identified by name.
EXPECT_NO_THROW(parsed_ = eval.parseString("option[host-name].text == 'foo'"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(3, eval.expression.size());
- checkTokenOption(eval.expression.at(0), 12);
+ checkTokenOption(eval.expression.at(0), 12, TokenOption::TEXTUAL);
}
// Test parsing of an option existence
EXPECT_NO_THROW(parsed_ = eval.parseString("option[100].exists"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(1, eval.expression.size());
- checkTokenOption(eval.expression.at(0), 100);
+ checkTokenOption(eval.expression.at(0), 100, TokenOption::EXISTS);
}
// Test checking that whitespace can surround option name.
EXPECT_NO_THROW(parsed_ = eval.parseString("option[ host-name ].text == 'foo'"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(3, eval.expression.size());
- checkTokenOption(eval.expression.at(0), 12);
+ checkTokenOption(eval.expression.at(0), 12, TokenOption::TEXTUAL);
}
// Test checking that newlines can surround option name.
eval.parseString("option[\n host-name \n ].text == \n'foo'"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(3, eval.expression.size());
- checkTokenOption(eval.expression.at(0), 12);
+ checkTokenOption(eval.expression.at(0), 12, TokenOption::TEXTUAL);
}
// Test parsing of an option represented as hexadecimal string.
EXPECT_NO_THROW(parsed_ = eval.parseString("option[123].hex == 0x666F6F"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(3, eval.expression.size());
- checkTokenOption(eval.expression.at(0), 123);
+ checkTokenOption(eval.expression.at(0), 123, TokenOption::HEXADECIMAL);
}
// This test checks that the relay4[code].hex can be used in expressions.
TokenPtr tmp2 = eval.expression.at(1);
TokenPtr tmp3 = eval.expression.at(2);
- checkTokenRelay4(tmp1, 13);
+ checkTokenRelay4(tmp1, 13, TokenOption::HEXADECIMAL);
checkTokenString(tmp2, "thirteen");
checkTokenEq(tmp3);
}
EXPECT_NO_THROW(parsed_ = eval.parseString("relay4[13].exists"));
EXPECT_TRUE(parsed_);
ASSERT_EQ(1, eval.expression.size());
- checkTokenRelay4(eval.expression.at(0), 13);
+ checkTokenRelay4(eval.expression.at(0), 13, TokenOption::EXISTS);
}
// Verify that relay4[13] is not usable in v6