[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Toon-members] TooN internal/slice_error.hh test/vec_test.cc
From: |
Edward Rosten |
Subject: |
[Toon-members] TooN internal/slice_error.hh test/vec_test.cc |
Date: |
Tue, 13 Jan 2009 13:31:32 +0000 |
CVSROOT: /cvsroot/toon
Module name: TooN
Changes by: Edward Rosten <edrosten> 09/01/13 13:31:32
Modified files:
internal : slice_error.hh
test : vec_test.cc
Log message:
More tests. Fix some slicing bugs.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/slice_error.hh?cvsroot=toon&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/TooN/test/vec_test.cc?cvsroot=toon&r1=1.2&r2=1.3
Patches:
Index: internal/slice_error.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/slice_error.hh,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- internal/slice_error.hh 13 Jan 2009 11:58:49 -0000 1.3
+++ internal/slice_error.hh 13 Jan 2009 13:31:32 -0000 1.4
@@ -13,7 +13,7 @@
{
static void check()
{
- BadSlice<(Start < 0) || (Start+Length>=Size)>::check();
+ BadSlice<(Start < 0) || (Start+Length>Size)>::check();
}
};
@@ -24,7 +24,7 @@
{
BadSlice<(Start != 2147483647 && Start < 0)>::check();
- if(start < 0 || start + length >= size)
+ if(start < 0 || start + length > size)
{
#ifdef TOON_TEST_INTERNALS
throw Internal::SliceError();
Index: test/vec_test.cc
===================================================================
RCS file: /cvsroot/toon/TooN/test/vec_test.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- test/vec_test.cc 13 Jan 2009 12:25:07 -0000 1.2
+++ test/vec_test.cc 13 Jan 2009 13:31:32 -0000 1.3
@@ -18,6 +18,9 @@
typedef class IgnoreMe{} type;
};
+namespace TooN{namespace Internal{
+struct NoError{};
+}}
#define TRY lineno = __LINE__; try{
@@ -28,10 +31,7 @@
}\
#define EXPECT(X) \
- if(#X == string("NoError"))\
- cerr << "Test OK on line " << lineno << " from " << func_lineno
<< endl;\
- else\
- cerr << "Test FAILED on line " << lineno << " from " <<
func_lineno << ". Expected " << #X << ", got nothing." << endl;\
+ throw TooN::Internal::NoError();\
}\
catch(TooN::Internal::X e)\
{\
@@ -42,31 +42,60 @@
EXPECT_CATCH(X, StaticSliceError)\
EXPECT_CATCH(X, SizeMismatch)\
EXPECT_CATCH(X, StaticSizeMismatch)\
+EXPECT_CATCH(X, NoError)
-#define test_bad_static_slices(...) test_bad_static_slices_(__LINE__ ,
__VA_ARGS__)
-template<class C> void test_bad_static_slices_(int func_lineno, C v)
+#define test_static_static_slices(...) test_static_static_slices_(__LINE__ ,
__VA_ARGS__)
+template<class C> void test_static_static_slices_(int func_lineno, C v)
{
TRY{
- Vector<2> v;
- v.slice<0, 3>();
+ v.template slice<0, 3>();
}
EXPECT(StaticSliceError);
TRY{
- Vector<2> v;
- v.slice<2, 2>();
+ v.template slice<2, 2>();
}
EXPECT(StaticSliceError);
TRY{
- Vector<2> v;
- v.slice<-1, 1>();
+ v.template slice<-1, 1>();
+ }
+ EXPECT(StaticSliceError);
+
+ TRY{
+ v.template slice<0, 2>();
+ }
+ EXPECT(NoError)
+
+}
+
+#define test_static_dynamic_slices(...) test_static_dynamic_slices_(__LINE__ ,
__VA_ARGS__)
+template<class C> void test_static_dynamic_slices_(int func_lineno, C v)
+{
+ TRY{
+ v.template slice<0, 3>();
+ }
+ EXPECT(SliceError);
+
+ TRY{
+ v.template slice<2, 2>();
+ }
+ EXPECT(SliceError);
+
+ TRY{
+ v.template slice<-1, 1>();
}
EXPECT(StaticSliceError);
+
+ TRY{
+ v.template slice<0, 2>();
+ }
+ EXPECT(NoError);
+
}
-#define test_bad_dynamic_slices(...) test_bad_dynamic_slices_(__LINE__,
__VA_ARGS__)
-template<class C> void test_bad_dynamic_slices_(int func_lineno, C v)
+#define test_dynamic_slices(...) test_dynamic_slices_(__LINE__, __VA_ARGS__)
+template<class C> void test_dynamic_slices_(int func_lineno, C v)
{
TRY{
v.slice(0,3);
@@ -82,26 +111,31 @@
v.slice(-1,1);
}
EXPECT(SliceError);
+
+ TRY{
+ v.template slice(0, 2);
+ }
+ EXPECT(NoError);
}
int main()
{
- test_bad_static_slices(Vector<2>());
- test_bad_dynamic_slices(Vector<2>());
+ test_static_static_slices(Vector<2>());
+ test_dynamic_slices(Vector<2>());
- test_bad_static_slices(Vector<4>().slice<0,2>());
- test_bad_dynamic_slices(Vector<4>().slice<0,2>());
+ test_static_static_slices(Vector<4>().slice<0,2>());
+ test_dynamic_slices(Vector<4>().slice<0,2>());
- test_bad_static_slices(Vector<4>().slice(0,2));
- test_bad_dynamic_slices(Vector<4>().slice(0,2));
+ test_static_dynamic_slices(Vector<4>().slice(0,2));
+ test_dynamic_slices(Vector<4>().slice(0,2));
- test_bad_static_slices(Vector<>(2));
- test_bad_dynamic_slices(Vector<>(2));
+ test_static_dynamic_slices(Vector<>(2));
+ test_dynamic_slices(Vector<>(2));
- test_bad_static_slices(Vector<>(4).slice<0,2>());
- test_bad_dynamic_slices(Vector<>(4).slice<0,2>());
+ test_static_static_slices(Vector<>(4).slice<0,2>());
+ test_dynamic_slices(Vector<>(4).slice<0,2>());
- test_bad_static_slices(Vector<>(4).slice(0,2));
- test_bad_dynamic_slices(Vector<>(4).slice(0,2));
+ test_static_dynamic_slices(Vector<>(4).slice(0,2));
+ test_dynamic_slices(Vector<>(4).slice(0,2));
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Toon-members] TooN internal/slice_error.hh test/vec_test.cc,
Edward Rosten <=