File: TePDIMatrixFunctions_test.cpp

package info (click to toggle)
libterralib 4.0.0-4
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 170,672 kB
  • sloc: cpp: 254,330; ansic: 82,910; makefile: 808; sh: 80; xml: 37
file content (128 lines) | stat: -rw-r--r-- 3,313 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#define TEAGN_ENABLE_STDOUT_LOG

#include <TeAgnostic.h>

#include <TePDIMatrixFunctions.hpp>

#include <string>

void GetCorrelation_test()
{
    TePDIMatrix< double > m1;
    TEAGN_TRUE_OR_THROW( m1.Reset( 2, 2 ), "Reset error" );
    
    TePDIMatrix< double > m2;
    TEAGN_TRUE_OR_THROW( m2.Reset( 2, 2 ), "Reset error" );
    
    m1( 0 , 0 ) = 0;
    m1( 0 , 1 ) = 1;
    m1( 1 , 0 ) = 2;
    m1( 1 , 1 ) = 3;
    
    m2( 0 , 0 ) = 0;
    m2( 0 , 1 ) = 1;
    m2( 1 , 0 ) = 2;
    m2( 1 , 1 ) = 3;

    TEAGN_CHECK_EPS( TePDIMatrixFunctions::GetCorrelation( m1, m2 ),
      1.0, 0.000001 , "Invalid GetCorrelation return" );
}


void Abs_test()
{
    TePDIMatrix< double > m1;
    TEAGN_TRUE_OR_THROW( m1.Reset( 2, 2 ), "Reset error" );
    
    TePDIMatrix< double > m2;
    
    m1( 0 , 0 ) = 0;
    m1( 0 , 1 ) = -1;
    m1( 1 , 0 ) = 2;
    m1( 1 , 1 ) = -3;
    
    TEAGN_TRUE_OR_THROW( TePDIMatrixFunctions::Abs( m1, m2 ),
      "Abs calcule failed" );
      
    TEAGN_CHECK_EPS( m2( 0, 0 ), 0.0, 0.000001, "Invalid value" );
    TEAGN_CHECK_EPS( m2( 0, 1 ), 1.0, 0.000001, "Invalid value" );
    TEAGN_CHECK_EPS( m2( 1, 0 ), 2.0, 0.000001, "Invalid value" );
    TEAGN_CHECK_EPS( m2( 1, 1 ), 3.0, 0.000001, "Invalid value" );
}


void WhereIsGreater_test()
{
    TePDIMatrix< double > m1;
    TEAGN_TRUE_OR_THROW( m1.Reset( 2, 2 ), "Reset error" );
    
    TePDIMatrix< double > m2;
    TEAGN_TRUE_OR_THROW( m2.Reset( 2, 2 ), "Reset error" );
    
    TePDIMatrix< double > gt;
    
    m1( 0 , 0 ) = 0;
    m1( 0 , 1 ) = 1;
    m1( 1 , 0 ) = 2;
    m1( 1 , 1 ) = 3;
    
    m2( 0 , 0 ) = 0;
    m2( 0 , 1 ) = 2;
    m2( 1 , 0 ) = 2;
    m2( 1 , 1 ) = 1;
    
    TEAGN_TRUE_OR_THROW( TePDIMatrixFunctions::WhereIsGreater( m1, m2, gt ),
      "WhereIsGreater calcule failed" );    

    TEAGN_CHECK_EPS( gt( 0, 0 ), 0.0, 0.000001 , 
      "Invalid WhereIsGreater result" );
    TEAGN_CHECK_EPS( gt( 0, 1 ), 0.0, 0.000001 , 
      "Invalid WhereIsGreater result" );
    TEAGN_CHECK_EPS( gt( 1, 0 ), 0.0, 0.000001 , 
      "Invalid WhereIsGreater result" );
    TEAGN_CHECK_EPS( gt( 1, 1 ), 1.0, 0.000001 , 
      "Invalid WhereIsGreater result" );            
}


void Negate_test()
{
    TePDIMatrix< double > m1;
    TEAGN_TRUE_OR_THROW( m1.Reset( 2, 2 ), "Reset error" );
    
    TePDIMatrix< double > neg;
    TEAGN_TRUE_OR_THROW( neg.Reset( 2, 2 ), "Reset error" );
    
    m1( 0 , 0 ) = 0;
    m1( 0 , 1 ) = -1;
    m1( 1 , 0 ) = 2;
    m1( 1 , 1 ) = -3;
    
    TEAGN_TRUE_OR_THROW( TePDIMatrixFunctions::Negate( m1, neg ),
      "Abs calcule failed" );
      
    TEAGN_CHECK_EPS( neg( 0, 0 ), 1.0, 0.000001, "Invalid value" );
    TEAGN_CHECK_EPS( neg( 0, 1 ), 0.0, 0.000001, "Invalid value" );
    TEAGN_CHECK_EPS( neg( 1, 0 ), 0.0, 0.000001, "Invalid value" );
    TEAGN_CHECK_EPS( neg( 1, 1 ), 0.0, 0.000001, "Invalid value" );
}


int main()
{
  TEAGN_LOGMSG( "Test started." );

  try{
    GetCorrelation_test();
    Abs_test();
    WhereIsGreater_test();
    Negate_test();
  }
  catch( const TeException& e ){
    TEAGN_LOGERR( "Test Failed - " + e.message() );
    return EXIT_FAILURE;
  } 

  TEAGN_LOGMSG( "Test OK." );
  return EXIT_SUCCESS;
}