1 /****************************************************************************
2 ** Copyright (c) 2001-2014
3 **
4 ** This file is part of the QuickFIX FIX Engine
5 **
6 ** This file may be distributed under the terms of the quickfixengine.org
7 ** license as defined by quickfixengine.org and appearing in the file
8 ** LICENSE included in the packaging of this file.
9 **
10 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12 **
13 ** See http://www.quickfixengine.org/LICENSE for licensing information.
14 **
15 ** Contact ask@quickfixengine.org if any conditions of this licensing are
16 ** not clear to you.
17 **
18 ****************************************************************************/
19 
20 #ifdef _MSC_VER
21 #pragma warning( disable : 4503 4355 4786 )
22 #include "stdafx.h"
23 #else
24 #include "config.h"
25 #endif
26 
27 #include <UnitTest++.h>
28 #include "MessageSorters.h"
29 
30 namespace FIX
31 {
32 
TEST(headerOrder)33 TEST(headerOrder)
34 {
35   CHECK( !header_order::compare(FIELD::BeginString, FIELD::BeginString) );
36   CHECK( header_order::compare(FIELD::BeginString, FIELD::BodyLength) );
37   CHECK( header_order::compare(FIELD::BeginString, FIELD::MsgType) );
38   CHECK( header_order::compare(FIELD::BeginString, 1) );
39   CHECK( header_order::compare(FIELD::BeginString, 100) );
40   CHECK( header_order::compare(FIELD::BeginString, 0) );
41 
42   CHECK( !header_order::compare(FIELD::BodyLength, FIELD::BeginString) );
43   CHECK( !header_order::compare(FIELD::BodyLength, FIELD::BodyLength) );
44   CHECK( header_order::compare(FIELD::BodyLength, FIELD::MsgType) );
45   CHECK( header_order::compare(FIELD::BodyLength, 1) );
46   CHECK( header_order::compare(FIELD::BeginString, 100) );
47   CHECK( header_order::compare(FIELD::BodyLength, 0) );
48 
49   CHECK( !header_order::compare(FIELD::MsgType, FIELD::BeginString) );
50   CHECK( !header_order::compare(FIELD::MsgType, FIELD::BodyLength) );
51   CHECK( !header_order::compare(FIELD::MsgType, FIELD::MsgType) );
52   CHECK( header_order::compare(FIELD::MsgType, 1) );
53   CHECK( header_order::compare(FIELD::BeginString, 100) );
54   CHECK( header_order::compare(FIELD::MsgType, 0) );
55 
56   CHECK( !header_order::compare(1, FIELD::BeginString) );
57   CHECK( !header_order::compare(1, FIELD::BodyLength) );
58   CHECK( !header_order::compare(1, FIELD::MsgType) );
59   CHECK( !header_order::compare(1, 1) );
60   CHECK( header_order::compare(1, 100) );
61   CHECK( !header_order::compare(1, 0) );
62 
63   CHECK( !header_order::compare(100, FIELD::BeginString) );
64   CHECK( !header_order::compare(100, FIELD::BodyLength) );
65   CHECK( !header_order::compare(100, FIELD::MsgType) );
66   CHECK( !header_order::compare(100, 1) );
67   CHECK( !header_order::compare(100, 100) );
68   CHECK( !header_order::compare(100, 0) );
69 
70   CHECK( !header_order::compare(0, FIELD::BeginString) );
71   CHECK( !header_order::compare(0, FIELD::BodyLength) );
72   CHECK( !header_order::compare(0, FIELD::MsgType) );
73   CHECK( header_order::compare(0, 1) );
74   CHECK( header_order::compare(0, 100) );
75   CHECK( !header_order::compare(0, 0) );
76 }
77 
TEST(trailerOrder)78 TEST(trailerOrder)
79 {
80   CHECK( !trailer_order::compare(FIELD::CheckSum, 0) );
81   CHECK( !trailer_order::compare(FIELD::CheckSum, 1) );
82   CHECK( !trailer_order::compare(FIELD::CheckSum, 100) );
83 
84   CHECK( trailer_order::compare(0, FIELD::CheckSum) );
85   CHECK( trailer_order::compare(1, FIELD::CheckSum) );
86   CHECK( trailer_order::compare(100, FIELD::CheckSum) );
87 }
88 
TEST(normalOrder)89 TEST(normalOrder)
90 {
91   CHECK( !trailer_order::compare(1, 1) );
92   CHECK( trailer_order::compare(1, 2) );
93   CHECK( trailer_order::compare(1, 3) );
94 
95   CHECK( !trailer_order::compare(2, 1) );
96   CHECK( !trailer_order::compare(2, 2) );
97   CHECK( trailer_order::compare(2, 3) );
98 
99   CHECK( !trailer_order::compare(3, 1) );
100   CHECK( !trailer_order::compare(3, 2) );
101   CHECK( !trailer_order::compare(3, 3) );
102 }
103 
TEST(groupOrder)104 TEST(groupOrder)
105 {
106   int order[6] = { 50, 12, 100, 11, 49, 0 };
107   message_order sorter( order );
108 
109   CHECK( !sorter(50, 50) );
110   CHECK( sorter(50, 12) );
111   CHECK( sorter(50, 100) );
112   CHECK( sorter(50, 11) );
113   CHECK( sorter(50, 49) );
114 
115   CHECK( !sorter(12, 50) );
116   CHECK( !sorter(12, 12) );
117   CHECK( sorter(12, 100) );
118   CHECK( sorter(12, 11) );
119   CHECK( sorter(12, 49) );
120 
121   CHECK( !sorter(100, 50) );
122   CHECK( !sorter(100, 12) );
123   CHECK( !sorter(100, 100) );
124   CHECK( sorter(100, 11) );
125   CHECK( sorter(100, 49) );
126 
127   CHECK( !sorter(11, 50) );
128   CHECK( !sorter(11, 12) );
129   CHECK( !sorter(11, 100) );
130   CHECK( !sorter(11, 11) );
131   CHECK( sorter(11, 49) );
132 
133   CHECK( !sorter(49, 50) );
134   CHECK( !sorter(49, 12) );
135   CHECK( !sorter(49, 100) );
136   CHECK( !sorter(49, 11) );
137   CHECK( !sorter(49, 49) );
138 
139   CHECK( sorter(50, 49) );
140   CHECK( sorter(50, 51) );
141 
142   CHECK( sorter(12, 11) );
143   CHECK( sorter(12, 13) );
144 
145   CHECK( sorter(100, 99) );
146   CHECK( sorter(100, 101) );
147 
148   CHECK( sorter(11, 10) );
149   CHECK( sorter(11, 13) );
150 
151   CHECK( sorter(49, 48) );
152   CHECK( sorter(49, 51) );
153 }
154 
155 }
156