stdex
Additional custom or not Standard C++ covered algorithms
Loading...
Searching...
No Matches
math.cpp
1/*
2 SPDX-License-Identifier: MIT
3 Copyright © 2023 Amebis
4*/
5
6#include "pch.h"
7
8using namespace std;
9#ifdef _WIN32
10using namespace Microsoft::VisualStudio::CppUnitTestFramework;
11#endif
12
13namespace UnitTests
14{
15 TEST_CLASS(math)
16 {
17 public:
18 TEST_METHOD(mul)
19 {
20 Assert::AreEqual<size_t>(10, stdex::mul(2, 5));
21 Assert::AreEqual<size_t>(10, stdex::mul(5, 2));
22 Assert::AreEqual<size_t>(0, stdex::mul(0, 10));
23 Assert::AreEqual<size_t>(0, stdex::mul(10, 0));
24 Assert::AreEqual<size_t>(0, stdex::mul(SIZE_MAX, 0));
25 Assert::AreEqual<size_t>(0, stdex::mul(0, SIZE_MAX));
26 Assert::AreEqual<size_t>(SIZE_MAX, stdex::mul(SIZE_MAX, 1));
27 Assert::AreEqual<size_t>(SIZE_MAX, stdex::mul(1, SIZE_MAX));
28 Assert::ExpectException<std::invalid_argument>([] { stdex::mul(SIZE_MAX, 2); });
29 Assert::ExpectException<std::invalid_argument>([] { stdex::mul(2, SIZE_MAX); });
30 }
31
32 TEST_METHOD(add)
33 {
34 Assert::AreEqual<size_t>(7, stdex::add(2, 5));
35 Assert::AreEqual<size_t>(7, stdex::add(5, 2));
36 Assert::AreEqual<size_t>(10, stdex::add(0, 10));
37 Assert::AreEqual<size_t>(10, stdex::add(10, 0));
38 Assert::AreEqual<size_t>(SIZE_MAX, stdex::add(SIZE_MAX, 0));
39 Assert::AreEqual<size_t>(SIZE_MAX, stdex::add(0, SIZE_MAX));
40 Assert::ExpectException<std::invalid_argument>([] { stdex::add(SIZE_MAX, 1); });
41 Assert::ExpectException<std::invalid_argument>([] { stdex::add(1, SIZE_MAX); });
42 }
43 };
44}