summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChristian Glöckner <cgloeckner@freenet.de>2016-03-31 08:10:44 +0200
committerChristian Glöckner <cgloeckner@freenet.de>2016-03-31 08:10:44 +0200
commit357bfe71e62970752bf32029f506b2e96967b1d1 (patch)
tree48c91306e82bd34de8845cf5e46c7d7348a949a6 /test
parentbd6bee9faac81dc9d0ed44a7d6329d4acdfdfc00 (diff)
Fixed API of class Atomic for POD
Diffstat (limited to 'test')
-rw-r--r--test/atomictest.cc38
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: