TEST_F(test_param_init_vector, allocate_phase_start) { gradient_structure gs; dll_param_init_vector p; int min = 2; int max = 3; int expected_phase_start = 4; double array[2]; p.allocate(&array[0], min, max, expected_phase_start, "p"); ASSERT_EQ(min, p.indexmin()); ASSERT_EQ(max, p.indexmax()); ASSERT_EQ(expected_phase_start, p.get_phase_start()); dvector vec(2, 3); vec(2) = 2.5; vec(3) = 3.5; p = vec; ASSERT_DOUBLE_EQ(2.5, value(p(2))); ASSERT_DOUBLE_EQ(3.5, value(p(3))); dvar_vector varvec(2, 3); varvec(2) = 12.5; varvec(3) = 13.5; p = varvec; ASSERT_DOUBLE_EQ(12.5, value(p(2))); ASSERT_DOUBLE_EQ(13.5, value(p(3))); dvariable var = 6.5; p = var; ASSERT_DOUBLE_EQ(6.5, value(p(2))); ASSERT_DOUBLE_EQ(6.5, value(p(3))); double val = 16.5; p = val; ASSERT_DOUBLE_EQ(16.5, value(p(2))); ASSERT_DOUBLE_EQ(16.5, value(p(3))); }
void test_variant() { { variant v1; check(v1.is(variant::VOID)); } { variant v1 = variant::null; check(v1.is_null()); variant v2 = v1; check(v2.is_null()); variant v3; v3 = v2; check(v3.is_null()); } { variant v1 = 10; check(v1.as_ord() == 10); variant v2 = v1; check(v2.as_ord() == 10); variant v3; v3 = v2; check(v3.as_ord() == 10); } { variant v1 = "abc"; check(v1.as_str() == "abc"); variant v2 = v1; check(v2.as_str() == "abc"); variant v3; v3 = v2; check(v3.as_str() == "abc"); str s = "def"; variant v4 = s; check(v4.as_str() == "def"); v4 = 20; check(v4.as_ord() == 20); } { // variant v1 = range(20, 50); check(v1.is(variant::RANGE)); check(v1.as_range().equals(20, 50)); // variant v2 = v1; check(v2.is(variant::RANGE)); check(v2.as_range().equals(20, 50)); // variant v3; v3 = v1; check(v3.is(variant::RANGE)); check(v3.as_range().equals(20, 50)); // check(v2 == v3 && v1 == v3); } { variant v1 = varvec(); check(v1.is(variant::VEC)); variant v2 = v1; check(v1 == v2); v2.as_vec().push_back("ABC"); check(v2.as_vec()[0].as_str() == "ABC"); check(v1 != v2); v1 = 20; v1 = v2; v2 = 30; v1 = v2; } { variant v1 = ordset(); check(v1.is(variant::ORDSET)); } { variant v1 = vardict(); check(v1.is(variant::DICT)); } { variant v1 = range(0, 10); variant v2 = range(0, 20); check(v1.as_range().left() == 0); check(v1.as_range().right() == 10); check(v2.as_range().left() == 0); check(v2.as_range().right() == 20); check(v1.compare(v2) == -1); } }