MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / TEST

Function TEST

source/test/function_test.cpp:7–57  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5using namespace Star;
6
7TEST(StoredFunctionTest, All) {
8 List<pair<double, double>> values = {{0.0f, 0.0f}, {1.0f, 1.0f}, {2.0f, 4.0f}, {3.0f, 9.0f}, {4.0f, 16.0f}};
9 ParametricFunction<double, double> function(values, InterpolationMode::Linear, BoundMode::Clamp);
10 StoredFunction levelingFunction(function);
11
12 EXPECT_LT(fabs(function.interpolate(2.5f) - 6.5f), 0.001f);
13
14 auto result = levelingFunction.search(16.0f);
15 EXPECT_TRUE(result.found);
16 EXPECT_LT(fabs(result.value - 16.0f), 0.001f);
17 EXPECT_LT(fabs(result.solution - 4.0f), 0.001f);
18
19 result = levelingFunction.search(0.0f);
20 EXPECT_TRUE(result.found);
21 EXPECT_LT(fabs(result.value - 0.0f), 0.001f);
22 EXPECT_LT(fabs(result.solution - 0.0f), 0.001f);
23
24 result = levelingFunction.search(6.5f);
25 EXPECT_TRUE(result.found);
26 EXPECT_LT(fabs(result.value - 6.5f), 0.001f);
27 EXPECT_LT(fabs(result.solution - 2.5f), 0.001f);
28
29 List<pair<double, double>> swordsValues = {{0.0f, 0.0f}, {1.0f, 10.0f}, {100.0f, 500.0f}, {9999.0f, 9999999.0f}};
30 ParametricFunction<double, double> swordsFunction(swordsValues, InterpolationMode::Linear, BoundMode::Clamp);
31 StoredFunction swordsLevelingFunction(swordsFunction);
32
33 result = swordsLevelingFunction.search(0.0f);
34 EXPECT_TRUE(result.found);
35 EXPECT_LT(fabs(result.value - 0.0f), 0.001f);
36 EXPECT_LT(fabs(result.solution - 0.0f), 0.001f);
37
38 result = swordsLevelingFunction.search(10.0f);
39 EXPECT_TRUE(result.found);
40 EXPECT_LT(fabs(result.value - 10.0f), 0.001f);
41 EXPECT_LT(fabs(result.solution - 1.0f), 0.001f);
42
43 result = swordsLevelingFunction.search(500.0f);
44 EXPECT_TRUE(result.found);
45 EXPECT_LT(fabs(result.value - 500.0f), 0.001f);
46 EXPECT_LT(fabs(result.solution - 100.0f), 0.001f);
47
48 result = swordsLevelingFunction.search(501.0f);
49 EXPECT_TRUE(result.found);
50 EXPECT_LT(fabs(result.value - 501.0f), 0.001f);
51 EXPECT_LT(fabs(result.solution - 100.0f), 0.001f);
52
53 result = swordsLevelingFunction.search(500.01f);
54 EXPECT_TRUE(result.found);
55 EXPECT_LT(fabs(result.value - 500.01f), 0.001f);
56 EXPECT_LT(fabs(result.solution - 100.0f), 0.001f);
57}

Callers

nothing calls this directly

Calls 2

searchMethod · 0.80
interpolateMethod · 0.45

Tested by

no test coverage detected