10
10
#include < functional>
11
11
#include < ranges>
12
12
#include < tuple>
13
+ #include < algorithm>
13
14
14
15
#include < gtest/gtest.h>
15
16
@@ -596,22 +597,7 @@ TEST(OptionalTest, RangeTest) {
596
597
}
597
598
}
598
599
599
- TEST (OptionalTest, HashTest) {
600
- beman::optional26::optional<int > o1 = beman::optional26::nullopt ;
601
- beman::optional26::optional<int > o2 = beman::optional26::nullopt ;
602
- beman::optional26::optional<int > o3 = 42 ;
603
- beman::optional26::optional<int > o4 = 42 ;
604
-
605
- auto h1 = std::hash<beman::optional26::optional<int >>{}(o1);
606
- auto h2 = std::hash<beman::optional26::optional<int >>{}(o2);
607
- auto h3 = std::hash<beman::optional26::optional<int >>{}(o3);
608
- auto h4 = std::hash<beman::optional26::optional<int >>{}(o4);
609
-
610
- EXPECT_EQ (h1, h2);
611
- EXPECT_EQ (h3, h4);
612
- }
613
-
614
- TEST (ViewMaybeTest, Constructors) {
600
+ TEST (OptionalTest, RangeConstructors) {
615
601
std::ranges::single_view<std::optional<int >> s;
616
602
std::ranges::single_view<std::optional<int >> s2{s};
617
603
std::ranges::single_view<std::optional<int >> s3{std::optional<int >{}};
@@ -625,7 +611,7 @@ TEST(ViewMaybeTest, Constructors) {
625
611
std::ignore = n3;
626
612
}
627
613
628
- TEST (ViewMaybeTest , ConceptCheckRef) {
614
+ TEST (OptionalTest , ConceptCheckRef) {
629
615
static_assert (std::ranges::range<beman::optional26::optional<int &>>);
630
616
static_assert (std::ranges::view<beman::optional26::optional<int &>>);
631
617
static_assert (std::ranges::input_range<beman::optional26::optional<int &>>);
@@ -661,7 +647,7 @@ TEST(ViewMaybeTest, ConceptCheckRef) {
661
647
static_assert (std::ranges::random_access_range<beman::optional26::optional<ref>>);
662
648
}
663
649
664
- TEST (ViewMaybeTest , BreathingTest) {
650
+ TEST (OptionalTest , BreathingTest) {
665
651
beman::optional26::optional<int > m;
666
652
beman::optional26::optional<int > m1{1 };
667
653
@@ -679,7 +665,7 @@ TEST(ViewMaybeTest, BreathingTest) {
679
665
ASSERT_EQ (*std::begin (d0), 1.0 );
680
666
}
681
667
682
- TEST (ViewMaybeTest , BreathingTestRef) {
668
+ TEST (OptionalTest , BreathingTestRef) {
683
669
beman::optional26::optional<int &> m;
684
670
685
671
int one = 1 ;
@@ -698,7 +684,7 @@ TEST(ViewMaybeTest, BreathingTestRef) {
698
684
ASSERT_EQ (*std::begin (d0), 1.0 );
699
685
}
700
686
701
- TEST (ViewMaybe , CompTest) {
687
+ TEST (OptionalTest , CompTest) {
702
688
beman::optional26::optional<int > m;
703
689
beman::optional26::optional<int > m0{0 };
704
690
beman::optional26::optional<int > m1{1 };
@@ -718,7 +704,7 @@ TEST(ViewMaybe, CompTest) {
718
704
ASSERT_TRUE (m1 <= m1a);
719
705
}
720
706
721
- TEST (ViewMaybe , CompTestRef) {
707
+ TEST (OptionalTest , CompTestRef) {
722
708
beman::optional26::optional<int &> m;
723
709
int zero = 0 ;
724
710
int one = 1 ;
@@ -758,7 +744,7 @@ inline constexpr auto yield_if = []<class T>(bool b, T x) {
758
744
return b ? beman::optional26::optional<T>{std::move (x)} : beman::optional26::nullopt ;
759
745
};
760
746
761
- TEST (ViewMaybeTest , PythTripleTest) {
747
+ TEST (OptionalTest , PythTripleTest) {
762
748
using std::views::iota;
763
749
auto triples = and_then (iota (1 ), [](int z) {
764
750
return and_then (iota (1 , z + 1 ), [=](int x) {
@@ -772,7 +758,7 @@ TEST(ViewMaybeTest, PythTripleTest) {
772
758
773
759
using namespace beman ;
774
760
775
- TEST (ViewMaybeTest , ValueBase) {
761
+ TEST (OptionalTest , ValueBase) {
776
762
int i = 7 ;
777
763
beman::optional26::optional<int > v1{};
778
764
@@ -784,7 +770,7 @@ TEST(ViewMaybeTest, ValueBase) {
784
770
ASSERT_EQ (i, 7 );
785
771
}
786
772
787
- TEST (ViewMaybeTest , RefWrapper) {
773
+ TEST (OptionalTest , RefWrapper) {
788
774
int i = 7 ;
789
775
790
776
beman::optional26::optional<int > v2{std::ref (i)};
@@ -793,7 +779,7 @@ TEST(ViewMaybeTest, RefWrapper) {
793
779
ASSERT_EQ (i, 7 );
794
780
}
795
781
796
- TEST (ViewMaybeTest , ValueNonDefaultConstruct) {
782
+ TEST (OptionalTest , ValueNonDefaultConstruct) {
797
783
using beman::optional26::tests::int_ctor;
798
784
int_ctor i = 7 ;
799
785
beman::optional26::optional<int_ctor> v1{};
@@ -802,7 +788,7 @@ TEST(ViewMaybeTest, ValueNonDefaultConstruct) {
802
788
std::ignore = v2;
803
789
}
804
790
805
- TEST (ViewMaybeTest , RefBase) {
791
+ TEST (OptionalTest , RefBase) {
806
792
int i = 7 ;
807
793
beman::optional26::optional<int &> v1{};
808
794
// ASSERT_TRUE(v1.size() == 0);
@@ -835,3 +821,25 @@ TEST(ViewMaybeTest, RefBase) {
835
821
}
836
822
ASSERT_EQ (s, 9 );
837
823
}
824
+
825
+ TEST (OptionalTest, HashTest) {
826
+ beman::optional26::optional<int > o1 = beman::optional26::nullopt ;
827
+ beman::optional26::optional<int > o2 = beman::optional26::nullopt ;
828
+ beman::optional26::optional<int > o3 = 42 ;
829
+ beman::optional26::optional<int > o4 = 42 ;
830
+
831
+ auto h1 = std::hash<beman::optional26::optional<int >>{}(o1);
832
+ auto h2 = std::hash<beman::optional26::optional<int >>{}(o2);
833
+ auto h3 = std::hash<beman::optional26::optional<int >>{}(o3);
834
+ auto h4 = std::hash<beman::optional26::optional<int >>{}(o4);
835
+
836
+ EXPECT_EQ (h1, h2);
837
+ EXPECT_EQ (h3, h4);
838
+ EXPECT_NE (h1, h3);
839
+
840
+ for (int i : std::views::iota (0 , 1000 )) {
841
+ auto h1 = std::hash<beman::optional26::optional<int >>{}(i);
842
+ auto h2 = std::hash<int >{}(i);
843
+ EXPECT_EQ (h1, h2);
844
+ }
845
+ }
0 commit comments