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
#include "macrovsa.hpp"

using namespace macrovsa;

int main()
{
  // Tests the basic belief, symbol, bundling, binding, and reduce, sim mechanisms via an associative map
  {
    Symbol y("y"), x("x"), z("z");
    AssociativeMap map("test1");
    map.add(x, y), map.add(x, z), map.add(y, x);
    const Symbol& m_x = map.get(x);
    Belief x_m_x = algo::sim(x, m_x), y_m_x = algo::sim(y, m_x);
    aidesys::alert(x_m_x.tau != 0 || y_m_x.tau != 1, "  illegal-state", "in macrovsa/test spurious result on basic data structures (x: '" + x.asString() + "' · map[x]: '" + m_x.asString() + "') = '" + x_m_x.asString() + "' (y: '" + y.asString() + "' · map[x]) = '" + y_m_x.asString() + "'");
  }
  // Tests the vector mesoscopic mechanisms
  {
    Symbol y("y"), x("x"), z("z");
    AssociativeMap map("test2");
    map.add(x, y), map.add(x, z), map.add(y, x);
    const Symbol& m_x = map.get(x);
    double x_m_x = algo::msim(x, m_x), y_m_x = algo::msim(y, m_x);
    aidesys::alert(fabs(x_m_x) > 0.1 || fabs(y_m_x) < 0.9, "  illegal-state", "in macrovsa/test spurious result on basic mesoscopic mechanism : (x · map[x]) = %f (y · map[x]) = %f", x_m_x, y_m_x);
  }
  // Tests the JSON syntax input output
  {
    const Symbol& symbol = Symbol::fromJSON("[ {b y: c x: [a b]}]");
    aidesys::alert(Symbol::toJSON(symbol) != Symbol::toJSON(Symbol::fromJSON(Symbol::toJSON(symbol))), "  illegal-state", "in macrovsa/test spurious result getSymbol/asString correspondance " + Symbol::toJSON(symbol) + " != " + Symbol::toJSON(Symbol::fromJSON(Symbol::toJSON(symbol))));
  }
  //
  return 0;
}