MCPcopy Create free account
hub / github.com/Oneflow-Inc/oneflow / TEST

Function TEST

oneflow/maybe/optional_test.cpp:25–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23using Private = details::OptionalPrivateScope;
24
25TEST(Optional, Scalar) {
26 Optional<int> a, b(1), c(a), d(b), e(NullOpt), bb(InPlace, 1);
27
28 static_assert(std::is_same<decltype(Private::Value(a)), int&>::value, "");
29
30 ASSERT_TRUE(!a.HasValue());
31 ASSERT_TRUE(b.HasValue());
32 ASSERT_EQ(b.ValueOr(0), 1);
33 ASSERT_TRUE(!c.HasValue());
34 ASSERT_EQ(c.ValueOr(233), 233);
35 ASSERT_TRUE(d.HasValue());
36 ASSERT_EQ(d.ValueOr(0), 1);
37 ASSERT_TRUE(!e.HasValue());
38
39 a = b;
40 ASSERT_TRUE(a.HasValue());
41 ASSERT_EQ(a.ValueOr(0), 1);
42
43 a = NullOpt;
44 ASSERT_TRUE(!a.HasValue());
45
46 a = 222;
47 ASSERT_TRUE(a.HasValue());
48 ASSERT_TRUE(a);
49 ASSERT_EQ(a.ValueOr(1), 222);
50
51 Private::Value(a) = 2333;
52 ASSERT_EQ(a.ValueOr(1), 2333);
53
54 Optional<const int> f, g(1);
55 ASSERT_TRUE(!f.HasValue());
56 ASSERT_TRUE(g.HasValue());
57 ASSERT_EQ(g.ValueOr(2), 1);
58
59 static_assert(std::is_same<decltype(Private::Value(f)), const int&>::value, "");
60
61 f = 1;
62 ASSERT_TRUE(f.HasValue());
63 ASSERT_EQ(f.ValueOr(2), 1);
64 ASSERT_EQ(Private::Value(f), 1);
65
66 int x = 2;
67 ASSERT_EQ(f.ValueOr(x), 1);
68
69 ASSERT_EQ(f.Emplace(2), 2);
70 ASSERT_EQ(Private::Value(f), 2);
71
72 f.Reset();
73 ASSERT_TRUE(!f);
74}
75
76TEST(Optional, NonScalar) {
77 auto x = std::make_shared<int>(233);

Callers

nothing calls this directly

Calls 10

absFunction · 0.85
OrElseMethod · 0.80
ValueFunction · 0.70
HasValueMethod · 0.45
EmplaceMethod · 0.45
ResetMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
MapMethod · 0.45
BindMethod · 0.45

Tested by

no test coverage detected