summary refs log tree commit diff stats
path: root/tests/enum/tenum3.nim
Commit message (Expand)AuthorAgeFilesLines
* tests: Trim .nim files trailing whitespaceAdam Strzelecki2015-09-041-3/+3
* new tester; all tests categorizedAraq2014-01-131-0/+16
8'>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
//: Boolean primitives

:(before "End Primitive Recipe Declarations")
AND,
:(before "End Primitive Recipe Numbers")
Recipe_ordinal["and"] = AND;
:(before "End Primitive Recipe Implementations")
case AND: {
  bool result = true;
  for (long long int i = 0; i < SIZE(ingredients); ++i) {
    assert(scalar(ingredients.at(i)));
    result = result && ingredients.at(i).at(0);
  }
  products.resize(1);
  products.at(0).push_back(result);
  break;
}

:(scenario and)
recipe main [
  1:boolean <- copy 1:literal
  2:boolean <- copy 0:literal
  3:boolean <- and 1:boolean, 2:boolean
]
+mem: storing 0 in location 3

:(scenario and2)
recipe main [
  1:boolean <- and 1:literal, 1:literal
]
+mem: storing 1 in location 1

:(scenario and_multiple)
recipe main [
  1:boolean <- and 1:literal, 1:literal, 0:literal
]
+mem: storing 0 in location 1

:(scenario and_multiple2)
recipe main [
  1:boolean <- and 1:literal, 1:literal, 1:literal
]
+mem: storing 1 in location 1

:(before "End Primitive Recipe Declarations")
OR,
:(before "End Primitive Recipe Numbers")
Recipe_ordinal["or"] = OR;
:(before "End Primitive Recipe Implementations")
case OR: {
  bool result = false;
  for (long long int i = 0; i < SIZE(ingredients); ++i) {
    assert(scalar(ingredients.at(i)));
    result = result || ingredients.at(i).at(0);
  }
  products.resize(1);
  products.at(0).push_back(result);
  break;
}

:(scenario or)
recipe main [
  1:boolean <- copy 1:literal
  2:boolean <- copy 0:literal
  3:boolean <- or 1:boolean, 2:boolean
]
+mem: storing 1 in location 3

:(scenario or2)
recipe main [
  1:boolean <- or 0:literal, 0:literal
]
+mem: storing 0 in location 1

:(scenario or_multiple)
recipe main [
  1:boolean <- and 0:literal, 0:literal, 0:literal
]
+mem: storing 0 in location 1

:(scenario or_multiple2)
recipe main [
  1:boolean <- or 0:literal, 0:literal, 1:literal
]
+mem: storing 1 in location 1

:(before "End Primitive Recipe Declarations")
NOT,
:(before "End Primitive Recipe Numbers")
Recipe_ordinal["not"] = NOT;
:(before "End Primitive Recipe Implementations")
case NOT: {
  products.resize(ingredients.size());
  for (long long int i = 0; i < SIZE(ingredients); ++i) {
    assert(scalar(ingredients.at(i)));
    products.at(i).push_back(!ingredients.at(i).at(0));
  }
  break;
}

:(scenario not)
recipe main [
  1:boolean <- copy 1:literal
  2:boolean <- not 1:boolean
]
+mem: storing 0 in location 2

:(scenario not_multiple)
recipe main [
  1:boolean, 2:boolean, 3:boolean <- not 1:literal, 0:literal, 1:literal
]
+mem: storing 0 in location 1
+mem: storing 1 in location 2
+mem: storing 0 in location 3