blob: 595f0c823a5655380e8f2849d1611041684cb89d [file] [log] [blame]
/**
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Copyright 2008 Google Inc. All Rights Reserved.
// Author: yian@google.com (Yi-An Huang)
#include "webutil/css/valuevalidator.h"
#include <string>
#include "testing/base/public/googletest.h"
#include "testing/base/public/gunit.h"
#include "webutil/css/string.h"
namespace Css {
class ValueValidatorTest : public testing::Test {
protected:
const ValueValidator& validator() {
return *ValueValidator::Get();
}
};
TEST_F(ValueValidatorTest, types) {
EXPECT_TRUE(validator().IsValidType(Property::COLOR, Value::IDENT));
EXPECT_TRUE(validator().IsValidType(Property::COLOR, Value::DEFAULT));
EXPECT_TRUE(validator().IsValidType(Property::COLOR, Value::UNKNOWN));
EXPECT_TRUE(validator().IsValidType(Property::COLOR, Value::COLOR));
EXPECT_FALSE(validator().IsValidType(Property::COLOR, Value::STRING));
EXPECT_FALSE(validator().IsValidType(Property::COLOR, Value::URI));
EXPECT_FALSE(validator().IsValidType(Property::COLOR, Value::FUNCTION));
}
TEST_F(ValueValidatorTest, identifiers) {
EXPECT_TRUE(validator().IsValidIdentifier(Property::COLOR,
Identifier::INHERIT));
EXPECT_FALSE(validator().IsValidIdentifier(Property::COLOR,
Identifier::OTHER));
// font-family take all identifiers.
EXPECT_TRUE(validator().IsValidIdentifier(Property::FONT_FAMILY,
Identifier::SERIF));
EXPECT_TRUE(validator().IsValidIdentifier(Property::FONT_FAMILY,
Identifier::OTHER));
// FIXME(yian): Is this right?
EXPECT_FALSE(validator().IsValidIdentifier(Property::FONT_FAMILY,
Identifier::NORMAL));
}
TEST_F(ValueValidatorTest, numbers) {
// misc units
EXPECT_FALSE(validator().IsValidNumber(
Property::HEIGHT, Value(0, UTF8ToUnicodeText(string("unit"), false)),
false));
EXPECT_FALSE(validator().IsValidNumber(
Property::HEIGHT, Value(0, Value::RAD), false));
// percent
EXPECT_TRUE(validator().IsValidNumber(
Property::HEIGHT, Value(0, Value::PERCENT), false));
EXPECT_FALSE(validator().IsValidNumber(
Property::Z_INDEX, Value(0, Value::PERCENT), false));
// no-unit
EXPECT_FALSE(validator().IsValidNumber(
Property::HEIGHT, Value(1, Value::NO_UNIT), false));
EXPECT_TRUE(validator().IsValidNumber(
Property::HEIGHT, Value(0, Value::NO_UNIT), false));
EXPECT_TRUE(validator().IsValidNumber(
Property::HEIGHT, Value(1, Value::NO_UNIT), true));
EXPECT_TRUE(validator().IsValidNumber(
Property::Z_INDEX, Value(1, Value::NO_UNIT), false));
// lengths
EXPECT_TRUE(validator().IsValidNumber(
Property::HEIGHT, Value(1, Value::PX), false));
EXPECT_FALSE(validator().IsValidNumber(
Property::Z_INDEX, Value(1, Value::PX), false));
// negative
EXPECT_TRUE(validator().IsValidNumber(
Property::BOTTOM, Value(-1, Value::PX), false));
EXPECT_FALSE(validator().IsValidNumber(
Property::HEIGHT, Value(-1, Value::PX), false));
}
TEST_F(ValueValidatorTest, combined) {
Identifier transparent_identifier(Identifier::TRANSPARENT);
Value transparent(transparent_identifier);
Value some_string(Value::STRING, UTF8ToUnicodeText(string("string"), false));
EXPECT_TRUE(validator().IsValidValue(Property::BACKGROUND_COLOR,
transparent, false));
EXPECT_FALSE(validator().IsValidValue(Property::COLOR, transparent, false));
EXPECT_FALSE(validator().IsValidValue(Property::COLOR, some_string, false));
}
} // namespace