changed wxVectorBase and WX_DECLARE_BASE into wxVector<T> template
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -169,12 +169,6 @@ struct WXDLLIMPEXP_BASE wxClientDataDictionaryPair
|
||||
wxClientData* data;
|
||||
};
|
||||
|
||||
_WX_DECLARE_VECTOR(
|
||||
wxClientDataDictionaryPair,
|
||||
wxClientDataDictionaryPairVector,
|
||||
WXDLLIMPEXP_BASE
|
||||
);
|
||||
|
||||
// this class is used internally to maintain the association between items
|
||||
// of (some subclasses of) wxControlWithItems and their client data
|
||||
// NOTE: this class does not keep track of whether it contains
|
||||
@@ -266,7 +260,7 @@ private:
|
||||
return m_vec.size();
|
||||
}
|
||||
|
||||
wxClientDataDictionaryPairVector m_vec;
|
||||
wxVector<wxClientDataDictionaryPair> m_vec;
|
||||
};
|
||||
|
||||
#endif // _WX_CLNTDATAH__
|
||||
|
@@ -2,9 +2,10 @@
|
||||
// Name: wx/vector.h
|
||||
// Purpose: STL vector clone
|
||||
// Author: Lindsay Mathieson
|
||||
// Modified by:
|
||||
// Modified by: Vaclav Slavik - make it a template
|
||||
// Created: 30.07.2001
|
||||
// Copyright: (c) 2001 Lindsay Mathieson <lindsay@mathieson.org>
|
||||
// Copyright: (c) 2001 Lindsay Mathieson <lindsay@mathieson.org>,
|
||||
// 2007 Vaclav Slavik <vslavik@fastmail.fm>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -13,89 +14,38 @@
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
class WXDLLIMPEXP_BASE wxVectorBase
|
||||
#if 0 // wxUSE_STL
|
||||
|
||||
// FIXME: can't do this yet, wxVector::erase() is different (takes index,
|
||||
// not iterator)
|
||||
#include <vector>
|
||||
#define wxVector std::vector
|
||||
|
||||
#else // !wxUSE_STL
|
||||
|
||||
template<typename T>
|
||||
class wxVector
|
||||
{
|
||||
public:
|
||||
typedef size_t size_type;
|
||||
private:
|
||||
size_type m_allocsize;
|
||||
size_type m_size,
|
||||
m_capacity;
|
||||
void **m_objects;
|
||||
typedef T value_type;
|
||||
|
||||
protected:
|
||||
bool Alloc(size_type sz)
|
||||
wxVector() : m_allocsize(16), m_size(0), m_capacity(0), m_objects(0) {}
|
||||
|
||||
wxVector(const wxVector& c)
|
||||
{
|
||||
// work in multiples of m_allocsize;
|
||||
sz = (sz / m_allocsize + 1) * m_allocsize;
|
||||
if (sz <= m_capacity)
|
||||
return true;
|
||||
|
||||
// try to realloc
|
||||
void *mem = realloc(m_objects, sizeof(void *) * sz);
|
||||
if (! mem)
|
||||
return false; // failed
|
||||
// success
|
||||
m_objects = (void **) mem;
|
||||
m_capacity = sz;
|
||||
return true;
|
||||
wxCHECK2(Copy(c), return);
|
||||
}
|
||||
|
||||
// untyped destructor of elements - must be overriden
|
||||
virtual void Free(void *) = 0;
|
||||
// untyped copy constructor of elements - must be overriden
|
||||
virtual void *Copy(const void *) const = 0;
|
||||
|
||||
const void *GetItem(size_type idx) const
|
||||
{
|
||||
wxASSERT(idx < m_size);
|
||||
return m_objects[idx];
|
||||
}
|
||||
|
||||
void Append(void *obj)
|
||||
{
|
||||
wxASSERT(m_size < m_capacity);
|
||||
m_objects[m_size] = obj;
|
||||
m_size++;
|
||||
}
|
||||
|
||||
void RemoveAt(size_type idx)
|
||||
{
|
||||
wxASSERT(idx < m_size);
|
||||
Free(m_objects[idx]);
|
||||
if (idx < m_size - 1)
|
||||
memcpy(
|
||||
m_objects + idx,
|
||||
m_objects + idx + 1,
|
||||
( m_size - idx - 1 ) * sizeof(void*) );
|
||||
m_size--;
|
||||
}
|
||||
|
||||
bool copy(const wxVectorBase& vb)
|
||||
~wxVector()
|
||||
{
|
||||
clear();
|
||||
if (! Alloc(vb.size()))
|
||||
return false;
|
||||
|
||||
for (size_type i = 0; i < vb.size(); i++)
|
||||
{
|
||||
void *o = vb.Copy(vb.GetItem(i));
|
||||
if (! o)
|
||||
return false;
|
||||
Append(o);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public:
|
||||
wxVectorBase() : m_allocsize(16), m_size(0), m_capacity(0), m_objects(0) {}
|
||||
virtual ~wxVectorBase() {} // calm down GCC
|
||||
|
||||
void clear()
|
||||
{
|
||||
for (size_type i = 0; i < size(); i++)
|
||||
Free(m_objects[i]);
|
||||
delete m_objects[i];
|
||||
free(m_objects);
|
||||
m_objects = 0;
|
||||
m_size = m_capacity = 0;
|
||||
@@ -124,89 +74,115 @@ public:
|
||||
return size() == 0;
|
||||
}
|
||||
|
||||
wxVectorBase& operator = (const wxVectorBase& vb)
|
||||
wxVector& operator=(const wxVector& vb)
|
||||
{
|
||||
wxCHECK(copy(vb), *this);
|
||||
wxCHECK(Copy(vb), *this);
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
#define WX_DECLARE_VECTORBASE(obj, cls)\
|
||||
protected:\
|
||||
virtual void Free(void *o)\
|
||||
{\
|
||||
delete (obj *) o;\
|
||||
}\
|
||||
virtual void *Copy(const void *o) const\
|
||||
{\
|
||||
return new obj(*(obj *) o);\
|
||||
}\
|
||||
public:\
|
||||
cls() {}\
|
||||
cls(const cls& c) : wxVectorBase()\
|
||||
{\
|
||||
wxCHECK2(copy(c), return);\
|
||||
}\
|
||||
~cls()\
|
||||
{\
|
||||
clear();\
|
||||
void push_back(const value_type& o)
|
||||
{
|
||||
wxCHECK2(Alloc(size() + 1), return);
|
||||
Append(new value_type(o));
|
||||
}
|
||||
|
||||
#define _WX_DECLARE_VECTOR(obj, cls, exp)\
|
||||
class exp cls : public wxVectorBase\
|
||||
{\
|
||||
WX_DECLARE_VECTORBASE(obj, cls)\
|
||||
public:\
|
||||
void push_back(const obj& o)\
|
||||
{\
|
||||
wxCHECK2(Alloc(size() + 1), return);\
|
||||
Append(new obj(o));\
|
||||
}\
|
||||
void pop_back()\
|
||||
{\
|
||||
RemoveAt(size() - 1);\
|
||||
}\
|
||||
const obj& at(size_type idx) const\
|
||||
{\
|
||||
return *(obj *) GetItem(idx);\
|
||||
}\
|
||||
obj& at(size_type idx)\
|
||||
{\
|
||||
return *(obj *) GetItem(idx);\
|
||||
}\
|
||||
const obj& operator[](size_type idx) const\
|
||||
{\
|
||||
return at(idx);\
|
||||
}\
|
||||
obj& operator[](size_type idx)\
|
||||
{\
|
||||
return at(idx);\
|
||||
}\
|
||||
const obj& front() const\
|
||||
{\
|
||||
return at(0);\
|
||||
}\
|
||||
obj& front()\
|
||||
{\
|
||||
return at(0);\
|
||||
}\
|
||||
const obj& back() const\
|
||||
{\
|
||||
return at(size() - 1);\
|
||||
}\
|
||||
obj& back()\
|
||||
{\
|
||||
return at(size() - 1);\
|
||||
}\
|
||||
size_type erase(size_type idx)\
|
||||
{\
|
||||
RemoveAt(idx);\
|
||||
return idx;\
|
||||
}\
|
||||
}
|
||||
void pop_back()
|
||||
{
|
||||
RemoveAt(size() - 1);
|
||||
}
|
||||
|
||||
#define WX_DECLARE_VECTOR(obj, cls) \
|
||||
_WX_DECLARE_VECTOR(obj, cls, WXDLLEXPORT)
|
||||
const value_type& at(size_type idx) const
|
||||
{
|
||||
wxASSERT(idx < m_size);
|
||||
return *m_objects[idx];
|
||||
}
|
||||
|
||||
value_type& at(size_type idx)
|
||||
{
|
||||
wxASSERT(idx < m_size);
|
||||
return *m_objects[idx];
|
||||
}
|
||||
|
||||
const value_type& operator[](size_type idx) const { return at(idx); }
|
||||
value_type& operator[](size_type idx) { return at(idx); }
|
||||
const value_type& front() const { return at(0); }
|
||||
value_type& front() { return at(0); }
|
||||
const value_type& back() const { return at(size() - 1); }
|
||||
value_type& back() { return at(size() - 1); }
|
||||
|
||||
size_type erase(size_type idx)
|
||||
{
|
||||
RemoveAt(idx);
|
||||
return idx;
|
||||
}
|
||||
|
||||
private:
|
||||
bool Alloc(size_type sz)
|
||||
{
|
||||
// work in multiples of m_allocsize;
|
||||
sz = (sz / m_allocsize + 1) * m_allocsize;
|
||||
if (sz <= m_capacity)
|
||||
return true;
|
||||
|
||||
// try to realloc
|
||||
void *mem = realloc(m_objects, sizeof(value_type*) * sz);
|
||||
if (! mem)
|
||||
return false; // failed
|
||||
// success
|
||||
m_objects = (value_type **) mem;
|
||||
m_capacity = sz;
|
||||
return true;
|
||||
}
|
||||
|
||||
void Append(value_type *obj)
|
||||
{
|
||||
wxASSERT(m_size < m_capacity);
|
||||
m_objects[m_size] = obj;
|
||||
m_size++;
|
||||
}
|
||||
|
||||
void RemoveAt(size_type idx)
|
||||
{
|
||||
wxASSERT(idx < m_size);
|
||||
delete m_objects[idx];
|
||||
if (idx < m_size - 1)
|
||||
memcpy(
|
||||
m_objects + idx,
|
||||
m_objects + idx + 1,
|
||||
( m_size - idx - 1 ) * sizeof(void*) );
|
||||
m_size--;
|
||||
}
|
||||
|
||||
bool Copy(const wxVector& vb)
|
||||
{
|
||||
clear();
|
||||
if (! Alloc(vb.size()))
|
||||
return false;
|
||||
|
||||
for (size_type i = 0; i < vb.size(); i++)
|
||||
{
|
||||
value_type *o = new value_type(vb.at(i));
|
||||
if (! o)
|
||||
return false;
|
||||
Append(o);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
size_type m_allocsize;
|
||||
size_type m_size,
|
||||
m_capacity;
|
||||
value_type **m_objects;
|
||||
};
|
||||
|
||||
#endif // wxUSE_STL/!wxUSE_STL
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
#define WX_DECLARE_VECTORBASE(obj, cls) typedef wxVector<obj> cls
|
||||
#define _WX_DECLARE_VECTOR(obj, cls, exp) WX_DECLARE_VECTORBASE(obj, cls)
|
||||
#define WX_DECLARE_VECTOR(obj, cls) WX_DECLARE_VECTORBASE(obj, cls)
|
||||
#endif // WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
#endif // _WX_VECTOR_H_
|
||||
|
||||
|
@@ -91,7 +91,8 @@ TEST_OBJECTS = \
|
||||
test_zlibstream.o \
|
||||
test_textfiletest.o \
|
||||
test_atomic.o \
|
||||
test_uris.o
|
||||
test_uris.o \
|
||||
test_vectors.o
|
||||
TEST_ODEP = $(___pch_testprec_test_testprec_h_gch___depname)
|
||||
TEST_GUI_CXXFLAGS = $(__test_gui_PCH_INC) -D__WX$(TOOLKIT)__ \
|
||||
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||
@@ -437,6 +438,9 @@ test_atomic.o: $(srcdir)/thread/atomic.cpp $(TEST_ODEP)
|
||||
test_uris.o: $(srcdir)/uris/uris.cpp $(TEST_ODEP)
|
||||
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/uris/uris.cpp
|
||||
|
||||
test_vectors.o: $(srcdir)/vectors/vectors.cpp $(TEST_ODEP)
|
||||
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/vectors/vectors.cpp
|
||||
|
||||
test_gui_sample_rc.o: $(srcdir)/../samples/sample.rc $(TEST_GUI_ODEP)
|
||||
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_5) $(__EXCEPTIONS_DEFINE_p_5) $(__RTTI_DEFINE_p_5) $(__THREAD_DEFINE_p_5) --include-dir $(srcdir) $(__DLLFLAG_p_5) --include-dir $(srcdir)/../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
|
||||
|
||||
|
@@ -79,7 +79,8 @@ TEST_OBJECTS = \
|
||||
$(OBJS)\test_zlibstream.obj \
|
||||
$(OBJS)\test_textfiletest.obj \
|
||||
$(OBJS)\test_atomic.obj \
|
||||
$(OBJS)\test_uris.obj
|
||||
$(OBJS)\test_uris.obj \
|
||||
$(OBJS)\test_vectors.obj
|
||||
TEST_GUI_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
|
||||
$(__OPTIMIZEFLAG) $(__THREADSFLAG_1) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||
@@ -465,6 +466,9 @@ $(OBJS)\test_atomic.obj: .\thread\atomic.cpp
|
||||
$(OBJS)\test_uris.obj: .\uris\uris.cpp
|
||||
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\test_vectors.obj: .\vectors\vectors.cpp
|
||||
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\test_gui_sample.res: .\..\samples\sample.rc
|
||||
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) -i$(SETUPHDIR) -i.\..\include -i. $(__DLLFLAG_p_3) -i.\..\samples -dNOPCH $**
|
||||
|
||||
|
@@ -71,7 +71,8 @@ TEST_OBJECTS = \
|
||||
$(OBJS)\test_zlibstream.o \
|
||||
$(OBJS)\test_textfiletest.o \
|
||||
$(OBJS)\test_atomic.o \
|
||||
$(OBJS)\test_uris.o
|
||||
$(OBJS)\test_uris.o \
|
||||
$(OBJS)\test_vectors.o
|
||||
TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
|
||||
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
|
||||
@@ -443,6 +444,9 @@ $(OBJS)\test_atomic.o: ./thread/atomic.cpp
|
||||
$(OBJS)\test_uris.o: ./uris/uris.cpp
|
||||
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\test_vectors.o: ./vectors/vectors.cpp
|
||||
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\test_gui_sample_rc.o: ./../samples/sample.rc
|
||||
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) --include-dir $(SETUPHDIR) --include-dir ./../include --include-dir . $(__DLLFLAG_p_3) --include-dir ./../samples --define NOPCH
|
||||
|
||||
|
@@ -72,7 +72,8 @@ TEST_OBJECTS = \
|
||||
$(OBJS)\test_zlibstream.obj \
|
||||
$(OBJS)\test_textfiletest.obj \
|
||||
$(OBJS)\test_atomic.obj \
|
||||
$(OBJS)\test_uris.obj
|
||||
$(OBJS)\test_uris.obj \
|
||||
$(OBJS)\test_vectors.obj
|
||||
TEST_GUI_CXXFLAGS = /M$(__RUNTIME_LIBS_23)$(__DEBUGRUNTIME) /DWIN32 \
|
||||
$(__DEBUGINFO) /Fd$(OBJS)\test_gui.pdb $(____DEBUGRUNTIME) \
|
||||
$(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
|
||||
@@ -550,6 +551,9 @@ $(OBJS)\test_atomic.obj: .\thread\atomic.cpp
|
||||
$(OBJS)\test_uris.obj: .\uris\uris.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\test_vectors.obj: .\vectors\vectors.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\test_gui_dummy.obj: .\dummy.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) /Yctestprec.h $**
|
||||
|
||||
|
@@ -276,7 +276,8 @@ TEST_OBJECTS = &
|
||||
$(OBJS)\test_zlibstream.obj &
|
||||
$(OBJS)\test_textfiletest.obj &
|
||||
$(OBJS)\test_atomic.obj &
|
||||
$(OBJS)\test_uris.obj
|
||||
$(OBJS)\test_uris.obj &
|
||||
$(OBJS)\test_vectors.obj
|
||||
TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
|
||||
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
|
||||
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
|
||||
@@ -498,6 +499,9 @@ $(OBJS)\test_atomic.obj : .AUTODEPEND .\thread\atomic.cpp
|
||||
$(OBJS)\test_uris.obj : .AUTODEPEND .\uris\uris.cpp
|
||||
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
||||
|
||||
$(OBJS)\test_vectors.obj : .AUTODEPEND .\vectors\vectors.cpp
|
||||
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
|
||||
|
||||
$(OBJS)\test_gui_sample.res : .AUTODEPEND .\..\samples\sample.rc
|
||||
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\include -i=. $(__DLLFLAG_p) -i=.\..\samples -dNOPCH $<
|
||||
|
||||
|
@@ -66,6 +66,7 @@
|
||||
textfile/textfiletest.cpp
|
||||
thread/atomic.cpp
|
||||
uris/uris.cpp
|
||||
vectors/vectors.cpp
|
||||
</sources>
|
||||
<wx-lib>net</wx-lib>
|
||||
<wx-lib>base</wx-lib>
|
||||
|
@@ -597,6 +597,10 @@ SOURCE=.\strings\vararg.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\vectors\vectors.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\strings\vsnprintf.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
66
tests/vectors/vectors.cpp
Normal file
66
tests/vectors/vectors.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: tests/vectors/vectors.cpp
|
||||
// Purpose: wxVector<T> unit test
|
||||
// Author: Vaclav Slavik
|
||||
// Created: 2007-07-07
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2007 Vaclav Slavik
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "testprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/wx.h"
|
||||
#endif // WX_PRECOMP
|
||||
|
||||
#include "wx/vector.h"
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// test class
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
class VectorsTestCase : public CppUnit::TestCase
|
||||
{
|
||||
public:
|
||||
VectorsTestCase() {}
|
||||
|
||||
private:
|
||||
CPPUNIT_TEST_SUITE( VectorsTestCase );
|
||||
CPPUNIT_TEST( PushTest );
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
void PushTest();
|
||||
|
||||
DECLARE_NO_COPY_CLASS(VectorsTestCase)
|
||||
};
|
||||
|
||||
// register in the unnamed registry so that these tests are run by default
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION( VectorsTestCase );
|
||||
|
||||
// also include in it's own registry so that these tests can be run alone
|
||||
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( VectorsTestCase, "VectorsTestCase" );
|
||||
|
||||
void VectorsTestCase::PushTest()
|
||||
{
|
||||
wxVector<int> v;
|
||||
|
||||
CPPUNIT_ASSERT( v.size() == 0 );
|
||||
v.push_back(1);
|
||||
CPPUNIT_ASSERT( v.size() == 1 );
|
||||
v.push_back(2);
|
||||
CPPUNIT_ASSERT( v.size() == 2 );
|
||||
v.push_back(42);
|
||||
CPPUNIT_ASSERT( v.size() == 3 );
|
||||
|
||||
CPPUNIT_ASSERT( v[0] == 1 );
|
||||
CPPUNIT_ASSERT( v[1] == 2 );
|
||||
CPPUNIT_ASSERT( v[2] == 42 );
|
||||
}
|
Reference in New Issue
Block a user