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