Line data Source code
1 : #include "doctest/doctest.h" 2 : 3 : #include "MaybeUninitialized.hpp" 4 : 5 : TEST_CASE_TEMPLATE("MaybeUninitialized: Construction without value", data_t, float, double) 6 2 : { 7 2 : elsa::MaybeUninitialized<data_t> uninit; 8 : 9 2 : CHECK_UNARY_FALSE(uninit.isInitialized()); 10 2 : } 11 : 12 : TEST_CASE_TEMPLATE("MaybeUninitialized: Assign to uninitialized", data_t, float, double) 13 2 : { 14 2 : elsa::MaybeUninitialized<data_t> uninit; 15 : 16 2 : CHECK_UNARY_FALSE(uninit.isInitialized()); 17 : 18 2 : uninit = 5.0; 19 : 20 2 : CHECK_UNARY(uninit.isInitialized()); 21 2 : CHECK_EQ(*uninit, data_t(5.0)); 22 2 : } 23 : 24 : TEST_CASE_TEMPLATE("MaybeUninitialized: Construction with value", data_t, float, double) 25 2 : { 26 2 : elsa::MaybeUninitialized<data_t> uninit(data_t(5.0)); 27 : 28 2 : CHECK_UNARY(uninit.isInitialized()); 29 2 : CHECK_EQ(*uninit, data_t(5.0)); 30 2 : } 31 : 32 : TEST_CASE_TEMPLATE("MaybeUninitialized: Construction with value", data_t, float, double) 33 2 : { 34 2 : data_t value = 12.0; 35 2 : elsa::MaybeUninitialized<data_t> uninit(value); 36 : 37 2 : CHECK_UNARY(uninit.isInitialized()); 38 2 : CHECK_EQ(*uninit, value); 39 2 : } 40 : 41 : TEST_CASE_TEMPLATE("MaybeUninitialized: Compare equality", data_t, float, double) 42 2 : { 43 2 : elsa::MaybeUninitialized<data_t> uninit1; 44 2 : elsa::MaybeUninitialized<data_t> uninit2; 45 : 46 2 : CHECK_EQ(uninit1, uninit1); 47 2 : CHECK_EQ(uninit1, uninit2); 48 : 49 2 : uninit1 = 4; 50 : 51 2 : CHECK_NE(uninit1, uninit2); 52 2 : CHECK_NE(uninit2, uninit1); 53 : 54 2 : uninit1 = 2; 55 : 56 2 : CHECK_NE(uninit1, uninit2); 57 2 : CHECK_NE(uninit2, uninit1); 58 : 59 2 : uninit1 = 6; 60 2 : uninit2 = 6; 61 : 62 2 : CHECK_EQ(uninit1, uninit2); 63 2 : CHECK_EQ(uninit2, uninit1); 64 2 : }