ReactOS  0.4.15-dev-1039-gb9754fa
test_algo.cpp File Reference
#include "Tests.h"
#include "LeakCheck.h"
#include "SortClass.h"
#include <algorithm>
#include <cassert>
#include <iostream>
Include dependency graph for test_algo.cpp:

Go to the source code of this file.

Classes

struct  SortBuffer
 
struct  less_by_reference< T >
 
struct  test_stable_partition
 
struct  test_stable_sort_1
 
struct  test_stable_sort_2
 
struct  test_inplace_merge_1
 
struct  test_inplace_merge_2
 

Functions

void assert_sorted_version (const SortBuffer &orig, const SortBuffer &buf)
 
void test_algo ()
 

Function Documentation

◆ assert_sorted_version()

void assert_sorted_version ( const SortBuffer orig,
const SortBuffer buf 
)

Definition at line 146 of file test_algo.cpp.

147 {
148  // Stop any potential failures that might occur during verification.
150 
151  // Prepare an array of counts of the occurrence of each value in
152  // the legal range.
153  unsigned counts[SortClass::kRange];
154  EH_STD::fill_n( counts, (int)SortClass::kRange, 0 );
155  for ( const SortClass *q = orig.begin(); q != orig.end(); q++ )
156  counts[ q->value() ]++;
157 
158  // Check that each element is greater than the previous one, or if they are
159  // equal, that their order has been preserved.
160  for ( const SortClass* p = buf.begin(); p != buf.end(); p++ )
161  {
162  if ( p != buf.begin() ) {
163  EH_ASSERT( p->value() > p[-1].value()
164  || p->value() == p[-1].value() && p->GetAddress() > p[-1].GetAddress() );
165  }
166  // Decrement the appropriate count for each value.
167  counts[ p->value() ]--;
168  }
169 
170  // Check that the values were only rearranged, and none were lost.
171  for ( unsigned j = 0; j < SortClass::kRange; j++ ) {
172  EH_ASSERT( counts[j] == 0 );
173  }
174 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
TestController gTestController
Definition: nc_alloc.cpp:46
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
#define EH_ASSERT
Definition: Prefix.h:37
_STLP_MOVE_TO_STD_NAMESPACE void fill_n(_OutputIter __first, _Size __n, const _Tp &__val)
Definition: _algobase.h:511
SortClass * end()
Definition: test_algo.cpp:43
static void CancelFailureCountdown()
Definition: nc_alloc.h:143
GLfloat GLfloat p
Definition: glext.h:8902
SortClass * begin()
Definition: test_algo.cpp:41

Referenced by test_stable_sort_1::operator()(), test_stable_sort_2::operator()(), test_inplace_merge_1::operator()(), and test_inplace_merge_2::operator()().

◆ test_algo()

void test_algo ( )

Definition at line 248 of file test_algo.cpp.

249 {
250  SortBuffer mergeBuf;
251  mergeBuf.PrepareMerge();
252 
253  EH_STD::cerr<<"EH test : testing algo.h"<<EH_STD::endl;
254  WeakCheck( mergeBuf, test_inplace_merge_1( mergeBuf ) );
255  WeakCheck( mergeBuf, test_inplace_merge_2( mergeBuf ) );
256 
257  SortBuffer buf;
261 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
void WeakCheck(const Value &v, const Operation &op, long max_iters=2000000)
Definition: LeakCheck.h:65
basic_ostream< _CharT, _Traits > &_STLP_CALL endl(basic_ostream< _CharT, _Traits > &__os)
Definition: _ostream.h:357
_STLP_DECLSPEC _Stl_aligned_buffer< ostream > cerr
Definition: iostream.cpp:102
void PrepareMerge()
Definition: test_algo.cpp:48

Referenced by main().