From 5e73dce0e71791b87e5b096a890578eefcc26639 Mon Sep 17 00:00:00 2001 From: KUDr Date: Sat, 27 May 2006 16:12:16 +0000 Subject: (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing. --- yapf/unittest/test_fixedsizearray.h | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 yapf/unittest/test_fixedsizearray.h (limited to 'yapf/unittest/test_fixedsizearray.h') diff --git a/yapf/unittest/test_fixedsizearray.h b/yapf/unittest/test_fixedsizearray.h new file mode 100644 index 000000000..0065a821e --- /dev/null +++ b/yapf/unittest/test_fixedsizearray.h @@ -0,0 +1,114 @@ +/* $Id$ */ + +struct CFsaItem +{ + int i; + + FORCEINLINE static int& NumInstances() { static int num_instances = 0; return num_instances; }; + + FORCEINLINE CFsaItem(int i = 0) + { + this->i = i; + NumInstances()++; + DBG("(*)"); + } + + FORCEINLINE CFsaItem(const CFsaItem& src) + { + this->i = src.i; + NumInstances()++; + DBG("(c)"); + } + + FORCEINLINE ~CFsaItem() + { + NumInstances()--; + DBG("(-)"); + } +}; + +typedef CFixedSizeArrayT CSubArray; +typedef CFixedSizeArrayT CSuperArray; + +static int TestFixedSizeArray(bool silent) +{ + int res = 0; + { + CSuperArray a; + + CHECK_INT(0, a.IsFull(), false); + CHECK_INT(1, a.IsEmpty(), true); + + CSubArray& b1 = a.Add(); + b1.Add().i = 1; + new(&b1.AddNC())CFsaItem(2); + + CSubArray& b2 = a.Add(); + new(&b2.AddNC())CFsaItem(3); + b2.Add().i = 4; + + CSubArray& b3 = a.AddNC(); + new(&b3)CSubArray(b1); + + CSubArray& b4 = a.AddNC(); + new(&b4)CSubArray(b2); + + CHECK_INT(2, a[0][0].i, 1); + CHECK_INT(3, b1[1].i, 2); + CHECK_INT(4, b1.Size(), 2); + CHECK_INT(5, a[3][0].i, 3); + CHECK_INT(6, a[3][1].i, 4); + CHECK_INT(7, CFsaItem::NumInstances(), 4); + CHECK_INT(8, a.IsFull(), true); + CHECK_INT(9, a.IsEmpty(), false); + CHECK_INT(10, a[3].IsFull(), false); + CHECK_INT(11, a[3].IsEmpty(), false); + } + CHECK_INT(12, CFsaItem::NumInstances(), 0); + + return res; +} + +typedef CArrayT CArray; + +static int TestArray(bool silent) +{ + int res = 0; + { + CArray a; + + CHECK_INT(0, a.IsFull(), false); + CHECK_INT(1, a.IsEmpty(), true); + + CHECK_INT(2, a.Size(), 0); + + a.Add().i = 1; + CHECK_INT(3, a.Size(), 1); + + new(&a.AddNC())CFsaItem(2); + CHECK_INT(4, a.Size(), 2); + + CHECK_INT(5, a.IsFull(), false); + CHECK_INT(6, a.IsEmpty(), false); + + a.Add().i = 3; + CHECK_INT(7, a.Size(), 3); + + new(&a.AddNC())CFsaItem(4); + CHECK_INT(8, a.Size(), 4); + + CHECK_INT(9, a[0].i, 1); + CHECK_INT(10, a[1].i, 2); + CHECK_INT(11, a[2].i, 3); + CHECK_INT(12, a[3].i, 4); + + CHECK_INT(13, a.IsFull(), true); + CHECK_INT(14, a.IsEmpty(), false); + + CHECK_INT(15, CFsaItem::NumInstances(), 4); + } + CHECK_INT(16, CFsaItem::NumInstances(), 0); + + return res; +} + -- cgit v1.2.3-70-g09d2