aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg-test/optional.cpp
diff options
context:
space:
mode:
authorBilly O'Neal <bion@microsoft.com>2020-03-16 11:19:55 -0700
committerGitHub <noreply@github.com>2020-03-16 11:19:55 -0700
commit31cca075630fbb438c0ec4e942f3502b6995c235 (patch)
tree40b05a0cb3e60f1219295eb9dd7626530038d923 /toolsrc/src/vcpkg-test/optional.cpp
parentecff0166637f958b0272d10f5f308c83e25d4acb (diff)
parent3cb8570203057b941722827a5fc38568e74c88cb (diff)
downloadvcpkg-31cca075630fbb438c0ec4e942f3502b6995c235.tar.gz
vcpkg-31cca075630fbb438c0ec4e942f3502b6995c235.zip
[vcpkg] Implement a warning when running in a mismatched Visual Studio prompt
Diffstat (limited to 'toolsrc/src/vcpkg-test/optional.cpp')
-rw-r--r--toolsrc/src/vcpkg-test/optional.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg-test/optional.cpp b/toolsrc/src/vcpkg-test/optional.cpp
new file mode 100644
index 000000000..ce728208f
--- /dev/null
+++ b/toolsrc/src/vcpkg-test/optional.cpp
@@ -0,0 +1,39 @@
+#include <catch2/catch.hpp>
+#include <vcpkg/base/optional.h>
+#include <vector>
+
+namespace
+{
+ struct identity_projection
+ {
+ template<class T>
+ const T& operator()(const T& val) noexcept
+ {
+ return val;
+ }
+ };
+}
+
+TEST_CASE ("equal", "[optional]")
+{
+ using vcpkg::Optional;
+
+ CHECK(Optional<int>{} == Optional<int>{});
+ CHECK(!(Optional<int>{} == Optional<int>{42}));
+ CHECK(!(Optional<int>{42} == Optional<int>{}));
+ CHECK(!(Optional<int>{1729} == Optional<int>{42}));
+ CHECK(Optional<int>{42} == Optional<int>{42});
+}
+
+TEST_CASE ("common_projection", "[optional]")
+{
+ using vcpkg::common_projection;
+ std::vector<int> input;
+ CHECK(!common_projection(input, identity_projection{}).has_value());
+ input.push_back(42);
+ CHECK(common_projection(input, identity_projection{}).value_or_exit(VCPKG_LINE_INFO) == 42);
+ input.push_back(42);
+ CHECK(common_projection(input, identity_projection{}).value_or_exit(VCPKG_LINE_INFO) == 42);
+ input.push_back(1729);
+ CHECK(!common_projection(input, identity_projection{}).has_value());
+}