Пример #1
0
TEST(PropertyTests, IntegerPropertyEncapsulatesIntValue)
{
    int c = 1;
    Property p = c;
    ASSERT_EQ(p.Type(), PropertyTypes::Integer);
    ASSERT_NO_THROW(p.AsInt());
    ASSERT_EQ(p.AsInt().Get(), 1);
    c = 2;
    ASSERT_EQ(p.AsInt().Get(), 2);
    p.AsInt().Set(3);
    ASSERT_EQ(p.AsInt().Get(), 3);
    ASSERT_EQ(c, 3);
    ASSERT_THROW(p.AsInt().Set(-2147483649LL), std::out_of_range);
    ASSERT_THROW(p.AsInt().Set(2147483648LL), std::out_of_range);
}
Пример #2
0
TEST(PropertyTests, IntegerPropertyEncapsulatesUnsignedShortValue)
{
    unsigned short c = 1;
    Property p = c;
    ASSERT_EQ(p.Type(), PropertyTypes::Integer);
    ASSERT_NO_THROW(p.AsInt());
    ASSERT_EQ(p.AsInt().Get(), 1);
    c = 2;
    ASSERT_EQ(p.AsInt().Get(), 2);
    p.AsInt().Set(3);
    ASSERT_EQ(p.AsInt().Get(), 3);
    ASSERT_EQ(c, 3);
    ASSERT_THROW(p.AsInt().Set(-1), std::out_of_range);
    ASSERT_THROW(p.AsInt().Set(65537), std::out_of_range);
}
Пример #3
0
TEST(PropertyTests, IntegerPropertyEncapsulatesShortValue)
{
    short c = 1;
    Property p = c;
    ASSERT_EQ(p.Type(), PropertyTypes::Integer);
    ASSERT_NO_THROW(p.AsInt());
    ASSERT_EQ(p.AsInt().Get(), 1);
    c = 2;
    ASSERT_EQ(p.AsInt().Get(), 2);
    p.AsInt().Set(3);
    ASSERT_EQ(p.AsInt().Get(), 3);
    ASSERT_EQ(c, 3);
    ASSERT_THROW(p.AsInt().Set(-32769), std::out_of_range);
    ASSERT_THROW(p.AsInt().Set(32768), std::out_of_range);
}
Пример #4
0
TEST(PropertyTests, IntegerPropertyEncapsulatesCharValue)
{
    char c = 1;
    Property p = c;
    ASSERT_EQ(p.Type(), PropertyTypes::Integer);
    ASSERT_NO_THROW(p.AsInt());
    ASSERT_EQ(p.AsInt().Get(), 1);
    c = 2;
    ASSERT_EQ(p.AsInt().Get(), 2);
    p.AsInt().Set(3);
    ASSERT_EQ(p.AsInt().Get(), 3);
    ASSERT_EQ(c, 3);
    ASSERT_THROW(p.AsInt().Set(-129), std::out_of_range);
    ASSERT_THROW(p.AsInt().Set(128), std::out_of_range);
}
Пример #5
0
TEST(PropertyTests, CollectionPropertyCanBeFiltered)
{
    std::vector<int> v;
    v.push_back(0);
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    Property p = v;
    p.AsCollection().Filter([&] (size_t, Property p)
    {
        return (p.AsInt().Get() & 1) != 0;
    });
    ASSERT_EQ(v.size(), 2);
    ASSERT_EQ(v[0], 1);
    ASSERT_EQ(v[1], 3);
}
Пример #6
0
TEST(PropertyTests, CollectionPropertyCanBeEnumerated)
{
    std::vector<int> v;
    v.push_back(0);
    v.push_back(1);
    v.push_back(2);
    std::vector<int> o;
    Property p = v;
    p.AsCollection().Enumerate([&] (size_t, Property p)
    {
        return o.push_back(static_cast<int>(p.AsInt().Get())), true;
    });
    ASSERT_EQ(o.size(), 3);
    ASSERT_EQ(o[0], 0);
    ASSERT_EQ(o[1], 1);
    ASSERT_EQ(o[2], 2);
}