yapf/unittest/test_autocopyptr.h
changeset 3900 2c84ed52709d
child 3971 77061ae9b534
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/yapf/unittest/test_autocopyptr.h	Sat May 27 16:12:16 2006 +0000
@@ -0,0 +1,43 @@
+/* $Id$ */
+
+struct CData
+{
+	int val;
+
+	FORCEINLINE CData() : val(0)                       {NumInstances()++; /*DBG("DCata::ctor()\n");*/}
+	FORCEINLINE CData(const CData& src) : val(src.val) {NumInstances()++; /*DBG("DCata::ctor(%d)\n", val);*/}
+	FORCEINLINE ~CData()                               {NumInstances()--; /*DBG("DCata::dtor(%d)\n", val);*/}
+
+	FORCEINLINE bool operator < (const CData& other) const {return (val < other.val);}
+
+	FORCEINLINE static int& NumInstances() { static int num_instances = 0; return num_instances; };
+
+};
+
+typedef CAutoCopyPtrT<CData> PData;
+
+static int TestAutoCopyPtr(bool silent)
+{
+	int res = 0;
+	{
+		PData p1, p3;
+		p1->val = 4;
+		PData p2; p2 = p1;
+		p2->val = 6;
+		DBG("\n%d, %d", p1->val, p2->val);
+		CHECK_INT(0, p1->val, 4);
+		CHECK_INT(1, p2->val, 6);
+
+		p2 = p1;
+		p3 = p1;
+		p2->val = 7;
+		DBG("\n%d, %d", p1->val, p2->val);
+		CHECK_INT(2, p3->val, 4);
+		CHECK_INT(3, p2->val, 7);
+
+		CHECK_INT(4, CData::NumInstances(), 3);
+	}
+	CHECK_INT(5, CData::NumInstances(), 0);
+	return res;
+}
+