diff options
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:  | 
