| 256 | end |
| 257 | |
| 258 | def test_4_Device |
| 259 | |
| 260 | nl = RBA::Netlist::new |
| 261 | |
| 262 | dc = RBA::DeviceClass::new |
| 263 | nl.add(dc) |
| 264 | assert_equal(dc.netlist.object_id, nl.object_id) |
| 265 | dc.name = "DC" |
| 266 | dc.description = "A device class" |
| 267 | |
| 268 | pd = RBA::DeviceTerminalDefinition::new |
| 269 | pd.name = "A" |
| 270 | pd.description = "Terminal A" |
| 271 | dc.add_terminal(pd) |
| 272 | |
| 273 | pd = RBA::DeviceTerminalDefinition::new |
| 274 | pd.name = "B" |
| 275 | pd.description = "Terminal B" |
| 276 | dc.add_terminal(pd) |
| 277 | |
| 278 | assert_equal(dc.has_terminal?("X"), false) |
| 279 | assert_equal(dc.has_terminal?("A"), true) |
| 280 | assert_equal(dc.terminal_id("A"), 0) |
| 281 | assert_equal(dc.terminal_id("B"), 1) |
| 282 | |
| 283 | c = RBA::Circuit::new |
| 284 | nl.add(c) |
| 285 | |
| 286 | d1 = c.create_device(dc) |
| 287 | d1.name = "D1" |
| 288 | assert_equal(d1.name, "D1") |
| 289 | assert_equal(d1.id, 1) |
| 290 | assert_equal(c.device_by_id(d1.id).id, 1) |
| 291 | assert_equal(c.device_by_id(2).inspect, "nil") |
| 292 | assert_equal(c.device_by_name(d1.name).name, "D1") |
| 293 | assert_equal(c.device_by_id(2).inspect, "nil") |
| 294 | assert_equal(c.device_by_name("doesnt_exist").inspect, "nil") |
| 295 | |
| 296 | assert_equal(d1.property(17), nil) |
| 297 | d1.set_property(17, 42) |
| 298 | assert_equal(d1.property(17), 42) |
| 299 | |
| 300 | d2 = c.create_device(dc) |
| 301 | assert_equal(d2.device_class.id, dc.id) |
| 302 | assert_equal(d2.device_class.object_id, dc.object_id) # by virtue of Ruby-to-C++ object mapping |
| 303 | d2.name = "D2" |
| 304 | |
| 305 | names = [] |
| 306 | dcs = [] |
| 307 | c.each_device { |d| names << d.name; dcs << d.device_class.name } |
| 308 | assert_equal(names, [ "D1", "D2" ]) |
| 309 | assert_equal(dcs, [ "DC", "DC" ]) |
| 310 | |
| 311 | c.remove_device(d2) |
| 312 | |
| 313 | names = [] |
| 314 | c.each_device { |d| names << d.name } |
| 315 | assert_equal(names, [ "D1" ]) |
nothing calls this directly
no test coverage detected