diff options
author | Christian Glöckner <cgloeckner@freenet.de> | 2016-03-31 08:10:44 +0200 |
---|---|---|
committer | Christian Glöckner <cgloeckner@freenet.de> | 2016-03-31 08:10:44 +0200 |
commit | 357bfe71e62970752bf32029f506b2e96967b1d1 (patch) | |
tree | 48c91306e82bd34de8845cf5e46c7d7348a949a6 /test | |
parent | bd6bee9faac81dc9d0ed44a7d6329d4acdfdfc00 (diff) |
Fixed API of class Atomic for POD
Diffstat (limited to 'test')
-rw-r--r-- | test/atomictest.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/atomictest.cc b/test/atomictest.cc index d4cacf0..d73695e 100644 --- a/test/atomictest.cc +++ b/test/atomictest.cc @@ -36,6 +36,12 @@ class AtomicTest CPPUNIT_TEST(atomicFloatUsesStandardImpl); CPPUNIT_TEST(atomicBoolUsesStandardImpl); CPPUNIT_TEST(atomicStringCanBeUsed); + CPPUNIT_TEST(podAtomicCanBeDefaultInitialized); + CPPUNIT_TEST(nonPodAtomicCanBeDefaultInitialized); + CPPUNIT_TEST(podAtomicCanBeValueInitialized); + CPPUNIT_TEST(nonPodAtomicCanBeValueInitialized); + CPPUNIT_TEST(podAtomicCanBeValueAssigned); + CPPUNIT_TEST(nonPodAtomicCanBeValueAssigned); CPPUNIT_TEST_SUITE_END(); public: @@ -63,6 +69,38 @@ class AtomicTest Atomic<std::string> tmp; } + void podAtomicCanBeDefaultInitialized() { + Atomic<int> i; + // note: i is initialized with garbage + } + + void nonPodAtomicCanBeDefaultInitialized() { + Atomic<std::string> s; + CPPUNIT_ASSERT_EQUAL(s.load(), std::string{}); + } + + void podAtomicCanBeValueInitialized() { + Atomic<int> i{5}; + CPPUNIT_ASSERT_EQUAL(i.load(), 5); + } + + void nonPodAtomicCanBeValueInitialized() { + Atomic<std::string> s{"hello world"}; + CPPUNIT_ASSERT_EQUAL(s.load(), std::string{"hello world"}); + } + + void podAtomicCanBeValueAssigned() { + Atomic<int> i; + i = 5; + CPPUNIT_ASSERT_EQUAL(i.load(), 5); + } + + void nonPodAtomicCanBeValueAssigned() { + Atomic<std::string> s; + s = "hello world"; + CPPUNIT_ASSERT_EQUAL(s.load(), std::string{"hello world"}); + } + // todo: further testing private: |