MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / calculate

Method calculate

test/testmathlib.cpp:104–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

102 }
103
104 void calculate() const {
105 // addition
106 ASSERT_EQUALS("256", MathLib::add("0xff", "1"));
107 ASSERT_EQUALS("249", MathLib::add("250", "-1"));
108 ASSERT_EQUALS("251", MathLib::add("250", "1"));
109 ASSERT_EQUALS("-2.0", MathLib::add("-1.", "-1"));
110 ASSERT_EQUALS("-1", MathLib::add("0", "-1"));
111 ASSERT_EQUALS("1", MathLib::add("1", "0"));
112 ASSERT_EQUALS("0.0", MathLib::add("0", "0."));
113 ASSERT_EQUALS("1.00000001", MathLib::add("1", "0.00000001")); // #4016
114 ASSERT_EQUALS("30666.22", MathLib::add("30666.22", "0.0")); // #4068
115
116 // subtraction
117 ASSERT_EQUALS("254", MathLib::subtract("0xff", "1"));
118 ASSERT_EQUALS("251", MathLib::subtract("250", "-1"));
119 ASSERT_EQUALS("249", MathLib::subtract("250", "1"));
120 ASSERT_EQUALS("0.0", MathLib::subtract("-1.", "-1"));
121 ASSERT_EQUALS("1", MathLib::subtract("0", "-1"));
122 ASSERT_EQUALS("1", MathLib::subtract("1", "0"));
123 ASSERT_EQUALS("0.0", MathLib::subtract("0", "0."));
124 ASSERT_EQUALS("0.99999999", MathLib::subtract("1", "0.00000001")); // #4016
125 ASSERT_EQUALS("30666.22", MathLib::subtract("30666.22", "0.0")); // #4068
126 ASSERT_EQUALS("0.0", MathLib::subtract("0.0", "0.0"));
127
128 // multiply
129 ASSERT_EQUALS("-0.003", MathLib::multiply("-1e-3", "3"));
130 ASSERT_EQUALS("-11.96", MathLib::multiply("-2.3", "5.2"));
131 ASSERT_EQUALS("3000.0", MathLib::multiply("1E3", "3"));
132 ASSERT_EQUALS("3000.0", MathLib::multiply("1E+3", "3"));
133 ASSERT_EQUALS("3000.0", MathLib::multiply("1.0E3", "3"));
134 ASSERT_EQUALS("-3000.0", MathLib::multiply("-1.0E3", "3"));
135 ASSERT_EQUALS("-3000.0", MathLib::multiply("-1.0E+3", "3"));
136 ASSERT_EQUALS("0.0", MathLib::multiply("+1.0E+3", "0"));
137 ASSERT_EQUALS("2147483648", MathLib::multiply("2","1073741824"));
138 ASSERT_EQUALS("536870912", MathLib::multiply("512","1048576"));
139
140 // divide
141 ASSERT_EQUALS("1", MathLib::divide("1", "1"));
142 ASSERT_EQUALS("0", MathLib::divide("0", "1"));
143 ASSERT_EQUALS("5", MathLib::divide("-10", "-2"));
144 ASSERT_EQUALS("-2.5", MathLib::divide("-10.", "4"));
145 ASSERT_EQUALS("2.5", MathLib::divide("-10.", "-4"));
146 ASSERT_EQUALS("5.0", MathLib::divide("25.5", "5.1"));
147 ASSERT_EQUALS("7.0", MathLib::divide("21.", "3"));
148 ASSERT_EQUALS("1", MathLib::divide("3", "2"));
149 ASSERT_THROW_INTERNAL_EQUALS(MathLib::divide("123", "0"), INTERNAL, "Internal Error: Division by zero"); // decimal zero: throw
150 ASSERT_THROW_INTERNAL_EQUALS(MathLib::divide("123", "00"), INTERNAL, "Internal Error: Division by zero"); // octal zero: throw
151 ASSERT_THROW_INTERNAL_EQUALS(MathLib::divide("123", "0x0"), INTERNAL, "Internal Error: Division by zero"); // hex zero: throw
152 ASSERT_NO_THROW(MathLib::divide("123", "0.0f")); // float zero
153 ASSERT_NO_THROW(MathLib::divide("123", "0.0")); // double zero
154 ASSERT_NO_THROW(MathLib::divide("123", "0.0L")); // long double zero
155 ASSERT_THROW_INTERNAL_EQUALS(MathLib::divide("-9223372036854775808", "-1"), INTERNAL, "Internal Error: Division overflow"); // #4520 - out of range => throw
156 ASSERT_EQUALS("4611686018427387904", MathLib::divide("-9223372036854775808", "-2")); // #6679
157
158
159 // invoke for each supported action
160 ASSERT_EQUALS("3", MathLib::calculate("2", "1", '+'));
161 ASSERT_EQUALS("1", MathLib::calculate("2", "1", '-'));

Callers

nothing calls this directly

Calls 1

calculateFunction · 0.85

Tested by

no test coverage detected