Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkSimpleBarrierConstraintCheckerTest.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #include <iostream>
14 #include "mitkTestingMacros.h"
15 
17 #include "mitkModelFitConstants.h"
18 #include "mitkModelFitException.h"
19 
21 {
23  result[0] = p1;
24  result[1] = p2;
25  result[2] = p3;
26  return result;
27 }
28 
29 int mitkSimpleBarrierConstraintCheckerTest(int /*argc*/, char*[] /*argv[]*/)
30 {
31  MITK_TEST_BEGIN("mitkSimpleBarrierConstraintCheckerTest")
32 
34 
35  double defaultMaxPenalty = 1e15;
36 
37  //check freshly created checker;
38  MITK_TEST_CONDITION_REQUIRED(checker->GetNumberOfConstraints() == 0, "Testing GetNumberOfConstraints for new checker.");
39  MITK_TEST_CONDITION_REQUIRED(checker->GetFailedConstraintValue() == defaultMaxPenalty, "Testing GetNumberOfConstraints for new checker.");
40  MITK_TEST_CONDITION_REQUIRED(checker->GetMaxConstraintPenalty() == defaultMaxPenalty, "Testing GetNumberOfConstraints for new checker.");
41 
42  //configure checker (test setter)
43  checker->SetLowerBarrier(0,5);
44  checker->SetLowerBarrier(1,10,3);
45  checker->SetUpperBarrier(1,100,10);
46  checker->SetUpperBarrier(2,50);
47 
50 
51  ParametersType p1 = GenerateParameters(10,30,40);
52  ParametersType p2 = GenerateParameters(5.0001,30,40);
53  ParametersType p3 = GenerateParameters(5,30,40);
54  ParametersType p4 = GenerateParameters(4.5,12,40);
55  ParametersType p5 = GenerateParameters(10,10,40);
56  ParametersType p6 = GenerateParameters(10,91,40);
57  ParametersType p7 = GenerateParameters(10,100,40);
58  ParametersType p8 = GenerateParameters(1000,30,50);
59  ParametersType p9 = GenerateParameters(10,30,49.999);
60 
61  PenaltiesType penalties = checker->GetPenalties(p1);
62  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p1.");
63  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p1.");
64  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p1.");
65  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p1.");
66  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p1) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p1.");
67 
68  penalties = checker->GetPenalties(p2);
69  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p2.");
70  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p2.");
71  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p2.");
72  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p2.");
73  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p2) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p2.");
74 
75  penalties = checker->GetPenalties(p3);
76  MITK_TEST_CONDITION_REQUIRED(penalties[0] == defaultMaxPenalty, "Testing penalty 1 of test parameters p3.");
77  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p3.");
78  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p3.");
79  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p3.");
80  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p3) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p3.");
81 
82  penalties = checker->GetPenalties(p4);
83  MITK_TEST_CONDITION_REQUIRED(penalties[0] == defaultMaxPenalty, "Testing penalty 1 of test parameters p4.");
84  MITK_TEST_CONDITION_REQUIRED(penalties[1] == -1*log(2/3.), "Testing penalty 2 of test parameters p4.");
85  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p4.");
86  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p4.");
87  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p4) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p4.");
88 
89  penalties = checker->GetPenalties(p5);
90  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p5.");
91  MITK_TEST_CONDITION_REQUIRED(penalties[1] == defaultMaxPenalty, "Testing penalty 2 of test parameters p5.");
92  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p5.");
93  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p5.");
94  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p5) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p5.");
95 
96  penalties = checker->GetPenalties(p6);
97  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p6.");
98  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p6.");
99  MITK_TEST_CONDITION_REQUIRED(penalties[2] == -1*log(9/10.), "Testing penalty 3 of test parameters p6.");
100  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p1.");
101  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p6) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p6.");
102 
103  penalties = checker->GetPenalties(p7);
104  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p7.");
105  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p7.");
106  MITK_TEST_CONDITION_REQUIRED(penalties[2] == defaultMaxPenalty, "Testing penalty 3 of test parameters p7.");
107  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p7.");
108  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p7) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p7.");
109 
110  penalties = checker->GetPenalties(p8);
111  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p8.");
112  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p8.");
113  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p8.");
114  MITK_TEST_CONDITION_REQUIRED(penalties[3] == defaultMaxPenalty, "Testing penalty 4 of test parameters p8.");
115  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p8) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p8.");
116 
117  penalties = checker->GetPenalties(p9);
118  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p9.");
119  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p9.");
120  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p9.");
121  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p9.");
122  MITK_TEST_CONDITION_REQUIRED(checker->GetPenaltySum(p9) == penalties[0] + penalties[1] + penalties[2] + penalties[3], "Testing penalty sum of test parameters p9.");
123 
124  checker->SetMaxConstraintPenalty(2222);
125  penalties = checker->GetPenalties(p8);
126  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 2222, "Testing penalty 3 of test parameters p8 with changed max penalty.");
127 
129  index.push_back(0);
130  index.push_back(1);
131  checker->SetLowerSumBarrier(index,37);
132 
133  index[0]=1;
134  index[1]=2;
135  checker->SetUpperSumBarrier(index,75);
136 
137  penalties = checker->GetPenalties(p1);
138  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p1.");
139  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p1.");
140  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p1.");
141  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p1.");
142  MITK_TEST_CONDITION_REQUIRED(penalties[4] == 0.0, "Testing penalty 5 of test parameters p1.");
143  MITK_TEST_CONDITION_REQUIRED(penalties[5] == 0.0, "Testing penalty 6 of test parameters p1.");
144 
145  penalties = checker->GetPenalties(p2);
146  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p2.");
147  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p2.");
148  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p2.");
149  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p2.");
150  MITK_TEST_CONDITION_REQUIRED(penalties[4] == 2222, "Testing penalty 5 of test parameters p2.");
151  MITK_TEST_CONDITION_REQUIRED(penalties[5] == 0.0, "Testing penalty 6 of test parameters p2.");
152 
153  penalties = checker->GetPenalties(p9);
154  MITK_TEST_CONDITION_REQUIRED(penalties[0] == 0.0, "Testing penalty 1 of test parameters p9.");
155  MITK_TEST_CONDITION_REQUIRED(penalties[1] == 0.0, "Testing penalty 2 of test parameters p9.");
156  MITK_TEST_CONDITION_REQUIRED(penalties[2] == 0.0, "Testing penalty 3 of test parameters p9.");
157  MITK_TEST_CONDITION_REQUIRED(penalties[3] == 0.0, "Testing penalty 4 of test parameters p9.");
158  MITK_TEST_CONDITION_REQUIRED(penalties[4] == 0.0, "Testing penalty 5 of test parameters p9.");
159  MITK_TEST_CONDITION_REQUIRED(penalties[5] == 2222, "Testing penalty 6 of test parameters p9.");
160 
161  ParametersType invalidP;
162 
163  MITK_TEST_FOR_EXCEPTION(mitk::Exception, checker->GetPenalties(invalidP));
164 
165  MITK_TEST_END()
166 }
mitk::SimpleBarrierConstraintChecker::ParametersType GenerateParameters(double p1, double p2, double p3)
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
std::vector< ParameterIndexType > ParameterIndexVectorType
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
#define MITK_TEST_FOR_EXCEPTION(EXCEPTIONCLASS, STATEMENT)
Simplified version of MITK_TEST_FOR_EXCEPTION_BEGIN / END for a single statement. ...
An object of this class represents an exception of MITK. Please don&#39;t instantiate exceptions manually...
Definition: mitkException.h:45
and MITK_TEST_END()
int mitkSimpleBarrierConstraintCheckerTest(int, char *[])