mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
440 lines
6.7 KiB
C++
440 lines
6.7 KiB
C++
//
|
|
// FILE: testTroolean.ino
|
|
// AUTHOR: Rob Tillaart
|
|
// PURPOSE: test for troolean (tri state) math library for Arduino
|
|
// URL: https://github.com/RobTillaart/Troolean
|
|
|
|
|
|
#include "Troolean.h"
|
|
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
Serial.println(__FILE__);
|
|
Serial.print("TROOLEAN_LIB_VERSION: ");
|
|
Serial.println(TROOLEAN_LIB_VERSION);
|
|
|
|
testConstructor();
|
|
testEquality();
|
|
testInEquality();
|
|
testAssignment();
|
|
testAND();
|
|
testOR();
|
|
testNOT();
|
|
testIF();
|
|
testIS();
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
}
|
|
|
|
|
|
void testConstructor()
|
|
{
|
|
Troolean f(false);
|
|
Troolean t(true);
|
|
Troolean u(-1);
|
|
Troolean v(u);
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
Serial.print(f);
|
|
Serial.print('\t');
|
|
Serial.print(t);
|
|
Serial.print('\t');
|
|
Serial.print(u);
|
|
Serial.print('\t');
|
|
Serial.println(v);
|
|
}
|
|
|
|
|
|
void testEquality()
|
|
{
|
|
Troolean f(false);
|
|
Troolean t(true);
|
|
Troolean u(unknown);
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
Serial.print(f == f);
|
|
Serial.print('\t');
|
|
Serial.print(f == t);
|
|
Serial.print('\t');
|
|
Serial.println(f == u);
|
|
Serial.print(t == f);
|
|
Serial.print('\t');
|
|
Serial.print(t == t);
|
|
Serial.print('\t');
|
|
Serial.println(t == u);
|
|
Serial.print(u == f);
|
|
Serial.print('\t');
|
|
Serial.print(u == t);
|
|
Serial.print('\t');
|
|
Serial.println(u == u);
|
|
|
|
Serial.print(f == false);
|
|
Serial.print('\t');
|
|
Serial.print(t == true);
|
|
Serial.print('\t');
|
|
Serial.print(u == false);
|
|
Serial.print('\t');
|
|
Serial.println(u == true);
|
|
}
|
|
|
|
|
|
void testInEquality()
|
|
{
|
|
Troolean f(false);
|
|
Troolean t(true);
|
|
Troolean u(-1);
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
Serial.print(f != f);
|
|
Serial.print('\t');
|
|
Serial.print(f != t);
|
|
Serial.print('\t');
|
|
Serial.println(f != u);
|
|
Serial.print(t != f);
|
|
Serial.print('\t');
|
|
Serial.print(t != t);
|
|
Serial.print('\t');
|
|
Serial.println(t != u);
|
|
Serial.print(u != f);
|
|
Serial.print('\t');
|
|
Serial.print(u != t);
|
|
Serial.print('\t');
|
|
Serial.println(u != u);
|
|
|
|
Serial.print(f != false);
|
|
Serial.print('\t');
|
|
Serial.print(t != true);
|
|
Serial.print('\t');
|
|
Serial.print(u != false);
|
|
Serial.print('\t');
|
|
Serial.println(u != true);
|
|
}
|
|
|
|
|
|
void testAssignment()
|
|
{
|
|
Troolean f(false);
|
|
Troolean t(true);
|
|
Troolean u(-1);
|
|
|
|
f = true;
|
|
t = unknown;
|
|
u = false;
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
Serial.print(f);
|
|
Serial.print('\t');
|
|
Serial.print(t);
|
|
Serial.print('\t');
|
|
Serial.println(u);
|
|
}
|
|
|
|
|
|
void testAND()
|
|
{
|
|
Troolean a, b, c;
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
a = true;
|
|
b = false;
|
|
c = a && b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = true;
|
|
b = true;
|
|
c = a && b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = true;
|
|
b = unknown;
|
|
c = a && b;
|
|
Serial.println(c);
|
|
|
|
a = false;
|
|
b = false;
|
|
c = a && b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = false;
|
|
b = true;
|
|
c = a && b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = false;
|
|
b = unknown;
|
|
c = a && b;
|
|
Serial.println(c);
|
|
|
|
a = unknown;
|
|
b = false;
|
|
c = a && b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = unknown;
|
|
b = true;
|
|
c = a && b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = unknown;
|
|
b = unknown;
|
|
c = a && b;
|
|
Serial.println(c);
|
|
}
|
|
|
|
|
|
void testOR()
|
|
{
|
|
Troolean a, b, c;
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
a = true;
|
|
b = false;
|
|
c = a || b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = true;
|
|
b = true;
|
|
c = a || b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = true;
|
|
b = unknown;
|
|
c = a || b;
|
|
Serial.println(c);
|
|
|
|
a = false;
|
|
b = false;
|
|
c = a || b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = false;
|
|
b = true;
|
|
c = a || b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = false;
|
|
b = unknown;
|
|
c = a || b;
|
|
Serial.println(c);
|
|
|
|
a = unknown;
|
|
b = false;
|
|
c = a || b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = unknown;
|
|
b = true;
|
|
c = a || b;
|
|
Serial.print(c);
|
|
Serial.print('\t');
|
|
a = unknown;
|
|
b = unknown;
|
|
c = a || b;
|
|
Serial.println(c);
|
|
}
|
|
|
|
|
|
void testNOT()
|
|
{
|
|
Troolean a(false), b(true), c(unknown);
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
Serial.print(!a);
|
|
Serial.print('\t');
|
|
Serial.print(!b);
|
|
Serial.print('\t');
|
|
Serial.println(!c);
|
|
|
|
Serial.print(!!a);
|
|
Serial.print('\t');
|
|
Serial.print(!!b);
|
|
Serial.print('\t');
|
|
Serial.println(!!c);
|
|
}
|
|
|
|
|
|
void testIF()
|
|
{
|
|
// a troolean cannot be used directly in a if or while statement
|
|
// it must be compared to either boolean ot troolean.
|
|
Troolean a(false), b(true), c(unknown);
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
|
|
Serial.print("TRUE");
|
|
Serial.print('\t');
|
|
if (a == true)
|
|
{
|
|
Serial.print('a');
|
|
Serial.print('\t');
|
|
}
|
|
if (b == true)
|
|
{
|
|
Serial.print('b');
|
|
Serial.print('\t');
|
|
}
|
|
if (c == true)
|
|
{
|
|
Serial.print('c');
|
|
Serial.print('\t');
|
|
}
|
|
Serial.println();
|
|
|
|
Serial.print("FALSE");
|
|
Serial.print('\t');
|
|
if (a == false)
|
|
{
|
|
Serial.print('a');
|
|
Serial.print('\t');
|
|
}
|
|
if (b == false)
|
|
{
|
|
Serial.print('b');
|
|
Serial.print('\t');
|
|
}
|
|
if (c == false)
|
|
{
|
|
Serial.print('c');
|
|
Serial.print('\t');
|
|
}
|
|
Serial.println();
|
|
|
|
Serial.print("UNKNOWN");
|
|
Serial.print('\t');
|
|
if (a == unknown)
|
|
{
|
|
Serial.print('a');
|
|
Serial.print('\t');
|
|
}
|
|
if (b == unknown)
|
|
{
|
|
Serial.print(b);
|
|
Serial.print('b');
|
|
Serial.print('\t');
|
|
}
|
|
if (c == unknown)
|
|
{
|
|
Serial.print('c');
|
|
Serial.print('\t');
|
|
}
|
|
Serial.println();
|
|
|
|
Serial.print("BOOL()");
|
|
Serial.print('\t');
|
|
if (a)
|
|
{
|
|
Serial.print('a');
|
|
Serial.print('\t');
|
|
}
|
|
if (b)
|
|
{
|
|
Serial.print('b');
|
|
Serial.print('\t');
|
|
}
|
|
if (c)
|
|
{
|
|
Serial.print('c');
|
|
Serial.print('\t');
|
|
}
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
void testIS()
|
|
{
|
|
Troolean f(false), t(true), u(unknown);
|
|
|
|
Serial.println();
|
|
Serial.println(__FUNCTION__);
|
|
|
|
Serial.print(f.isFalse());
|
|
Serial.print('\t');
|
|
Serial.print(f.isTrue());
|
|
Serial.print('\t');
|
|
Serial.println(f.isUnknown());
|
|
|
|
Serial.print(t.isFalse());
|
|
Serial.print('\t');
|
|
Serial.print(t.isTrue());
|
|
Serial.print('\t');
|
|
Serial.println(t.isUnknown());
|
|
|
|
Serial.print(u.isFalse());
|
|
Serial.print('\t');
|
|
Serial.print(u.isTrue());
|
|
Serial.print('\t');
|
|
Serial.println(u.isUnknown());
|
|
|
|
Serial.println();
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////
|
|
//
|
|
// EXPECTED OUTPUT
|
|
//
|
|
/*
|
|
.....\test1.ino
|
|
TROOLEAN_LIB_VERSION: 0.1.1
|
|
|
|
testConstructor
|
|
false true unknown unknown
|
|
|
|
testEquality
|
|
1 0 0
|
|
0 1 0
|
|
0 0 1
|
|
1 1 0 0
|
|
|
|
testInEquality
|
|
0 1 1
|
|
1 0 1
|
|
1 1 0
|
|
0 0 1 1
|
|
|
|
testAssignment
|
|
true unknown false
|
|
|
|
testAND
|
|
false true unknown
|
|
false false false
|
|
false unknown unknown
|
|
|
|
testOR
|
|
true true true
|
|
false true unknown
|
|
unknown true unknown
|
|
|
|
testNOT
|
|
true false unknown
|
|
false true unknown
|
|
|
|
testIF
|
|
TRUE b
|
|
FALSE a
|
|
UNKNOWN c
|
|
BOOL() trueb
|
|
|
|
testIS
|
|
1 0 0
|
|
0 1 0
|
|
0 0 1
|
|
|
|
*/
|
|
|
|
|
|
// -- END OF FILE --
|
|
|