1# AltitudeTrigger unit tests 2# 3# Copyright (C) 2014 Anton Gomez Alvedro 4# 5# This program is free software; you can redistribute it and/or 6# modify it under the terms of the GNU General Public License as 7# published by the Free Software Foundation; either version 2 of the 8# License, or (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, but 11# WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 19io.include("Aircraft/Generic/Systems/Tests/test.nas"); 20io.include("Aircraft/Generic/Systems/failures.nas"); 21 22var TestAltitudeTrigger = { 23 24 parents: [TestSuite], 25 26 setup: func { 27 props.globals.initNode("/test"); 28 }, 29 30 cleanup: func { 31 me.trigger = nil; 32 props.globals.getNode("/test").remove(); 33 }, 34 35 test_binding: func { 36 37 setprop("/test/foreign-property", 25); 38 39 me.trigger = AltitudeTrigger.new(100, 200); 40 me.trigger.bind("/test/"); 41 42 assert_prop_exists("/test/reset"); 43 assert_prop_exists("/test/min-altitude-ft"); 44 assert_prop_exists("/test/min-altitude-ft"); 45 46 me.trigger.unbind(); 47 48 fail_if_prop_exists("/test/reset"); 49 fail_if_prop_exists("/test/min-altitude-ft"); 50 fail_if_prop_exists("/test/min-altitude-ft"); 51 52 assert_prop_exists("/test/foreign-property"); 53 }, 54 55 test_props_are_read_on_reset: func { 56 57 me.trigger = AltitudeTrigger.new(100, 200); 58 me.trigger.bind("/test/"); 59 60 assert(me.trigger.params["min-altitude-ft"] == 100); 61 assert(me.trigger.params["max-altitude-ft"] == 200); 62 63 setprop("/test/min-altitude-ft", 1000); 64 setprop("/test/max-altitude-ft", 2000); 65 66 assert(me.trigger.params["min-altitude-ft"] == 100); 67 assert(me.trigger.params["max-altitude-ft"] == 200); 68 69 me.trigger.reset(); 70 71 assert(me.trigger.params["min-altitude-ft"] == 1000); 72 assert(me.trigger.params["max-altitude-ft"] == 2000); 73 }, 74 75 test_trigger_fires_within_min_and_max: func { 76 77 me.trigger = AltitudeTrigger.new(100, 200); 78 79 me.trigger._altitude_prop = "/test/fake-altitude-ft"; 80 assert(!me.trigger.fired); 81 82 setprop("/test/fake-altitude-ft", 0); 83 assert(me.trigger.update() == 0); 84 assert(!me.trigger.fired); 85 86 setprop("/test/fake-altitude-ft", 300); 87 assert(me.trigger.update() == 0); 88 assert(!me.trigger.fired); 89 90 setprop("/test/fake-altitude-ft", 150); 91 assert(me.trigger.update() == 1); 92 assert(me.trigger.fired); 93 }, 94 95 test_trigger_accepts_nil_max: func { 96 97 me.trigger = AltitudeTrigger.new(500, nil); 98 me.trigger._altitude_prop = "/test/fake-altitude-ft"; 99 assert(!me.trigger.fired); 100 101 setprop("/test/fake-altitude-ft", -250); 102 assert(me.trigger.update() == 0); 103 assert(!me.trigger.fired); 104 105 setprop("/test/fake-altitude-ft", 0); 106 assert(me.trigger.update() == 0); 107 assert(!me.trigger.fired); 108 109 setprop("/test/fake-altitude-ft", 250); 110 assert(me.trigger.update() == 0); 111 assert(!me.trigger.fired); 112 113 setprop("/test/fake-altitude-ft", 750); 114 assert(me.trigger.update() == 1); 115 assert(me.trigger.fired); 116 }, 117 118 test_trigger_accepts_nil_min: func { 119 120 me.trigger = AltitudeTrigger.new(nil, 500); 121 me.trigger._altitude_prop = "/test/fake-altitude-ft"; 122 me.trigger.bind("/test/trigger/"); 123 124 assert(!me.trigger.fired); 125 126 setprop("/test/fake-altitude-ft", 750); 127 assert(me.trigger.update() == 0); 128 assert(!me.trigger.fired); 129 130 setprop("/test/fake-altitude-ft", 500); 131 assert(me.trigger.update() == 0); 132 assert(!me.trigger.fired); 133 134 setprop("/test/fake-altitude-ft", 250); 135 assert(me.trigger.update() == 1); 136 assert(me.trigger.fired); 137 138 me.trigger.reset(); 139 140 setprop("/test/fake-altitude-ft", -250); 141 assert(me.trigger.update() == 1); 142 assert(me.trigger.fired); 143 }, 144 145 test_trigger_dies_if_both_params_are_nil: func { 146 call(AltitudeTrigger.new, [nil, nil], AltitudeTrigger, var err = []); 147 assert(size(err) > 0); 148 }, 149 150 test_to_str: func { 151 me.trigger = AltitudeTrigger.new(100, 200); 152 call(me.trigger.to_str, [], me.trigger, var err = []); 153 assert(size(err) == 0); 154 } 155}; 156