1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
/*!
@authors Andrei Novikov (pyclustering@yandex.ru)
@date 2014-2020
@copyright BSD-3-Clause
*/
#include <pyclustering/differential/differ_state.hpp>
#include <gtest/gtest.h>
using namespace pyclustering::differential;
TEST(utest_differential, plus_states) {
differ_state<double> state1 { 0, 1, 2, 3, 4 };
differ_state<double> state2 { 0, 1, 2, 3, 4 };
differ_state<double> expected_result { 0, 2, 4, 6, 8 };
ASSERT_TRUE(expected_result != state1);
ASSERT_TRUE(expected_result != state2);
ASSERT_TRUE(state1 == state2);
ASSERT_TRUE(expected_result == state1 + state2);
}
TEST(utest_differential, plus_various_states) {
differ_state<double> state1 { 12, -6, 11, 12, 5 };
differ_state<double> state2 { -5, 5.5, 100, 32, 1 };
differ_state<double> expected_result { 12 - 5, 5.5 - 6, 11 + 100, 12 + 32, 5 + 1 };
ASSERT_TRUE(expected_result == state1 + state2);
}
TEST(utest_differential, plus_value) {
differ_state<double> state { 0, 1, 2, 3, 4 };
differ_state<double> expected_result1 { 1, 2, 3, 4, 5 };
ASSERT_TRUE(expected_result1 == state + 1);
ASSERT_TRUE(expected_result1 == 1 + state);
differ_state<double> expected_result2 { 0.5, 1.5, 2.5, 3.5, 4.5 };
ASSERT_TRUE(expected_result2 == state + 0.5);
ASSERT_TRUE(expected_result2 == 0.5 + state);
differ_state<double> expected_result3 { -1, 0, 1, 2, 3 };
ASSERT_TRUE(expected_result3 == state + (-1));
ASSERT_TRUE(expected_result3 == (-1) + state);
}
TEST(utest_differential, minus_states) {
differ_state<double> state1 { 0, 1, 2, 3, 4 };
differ_state<double> state2 { 0, 1, 2, 3, 4 };
differ_state<double> expected_result { 0, 0, 0, 0, 0 };
ASSERT_TRUE(expected_result == state1 - state2);
}
TEST(utest_differential, minus_various_states) {
differ_state<double> state1 { 5, 10, 15, 20, 25, 30 };
differ_state<double> state2 { 2, 12, 12, 22, 22, 32 };
differ_state<double> expected_result { 3, -2, 3, -2, 3, -2 };
ASSERT_TRUE(expected_result == state1 - state2);
}
TEST(utest_differential, minus_value) {
differ_state<double> state { 0, 1, 2, 3, 4 };
differ_state<double> expected_result1 { -1, 0, 1, 2, 3 };
ASSERT_TRUE(expected_result1 == state - 1);
differ_state<double> expected_result2 { 1, 0, -1, -2, -3 };
ASSERT_TRUE(expected_result2 == 1 - state);
}
TEST(utest_differential, multiply_value) {
differ_state<double> state1 { -2, -1, 0, 1, 2 };
ASSERT_TRUE(state1 == state1 * 1);
ASSERT_TRUE(state1 == 1 * state1);
differ_state<double> expected_result1 { -4, -2, 0, 2, 4 };
differ_state<double> expected_result2 { -6, -3, 0, 3, 6 };
ASSERT_TRUE(expected_result1 == state1 * 2);
ASSERT_TRUE(expected_result1 == 2 * state1);
ASSERT_TRUE(expected_result2 == state1 * 3);
ASSERT_TRUE(expected_result2 == 3 * state1);
}
TEST(utest_differential, divide_value) {
differ_state<double> state1 { -2, -1, 0, 1, 2 };
differ_state<double> expected_result1 { -2, -1, 0, 1, 2 };
ASSERT_TRUE(expected_result1 == state1 / 1);
differ_state<double> expected_result2 { -1, -0.5, 0, 0.5, 1 };
ASSERT_TRUE(expected_result2 == state1 / 2);
}
TEST(utest_differential, assign_operations) {
differ_state<double> state1 { -2, -1, 0, 1, 2 };
differ_state<double> state2 = state1;
ASSERT_TRUE(state1 == state2);
ASSERT_TRUE(state2 == state1);
state1 += 10;
differ_state<double> expected_result1 { 8, 9, 10, 11, 12 };
ASSERT_TRUE(expected_result1 == state1);
state1 -= 5;
differ_state<double> expected_result2 { 3, 4, 5, 6, 7 };
ASSERT_TRUE(expected_result2 == state1);
state1 *= 2;
differ_state<double> expected_result3 { 6, 8, 10, 12, 14 };
ASSERT_TRUE(expected_result3 == state1);
state1 /= 0.5;
differ_state<double> expected_result4 { 12, 16, 20, 24, 28 };
ASSERT_TRUE(expected_result4 == state1);
state1 = state2;
ASSERT_TRUE(state1 == state2);
}
|