| var tape = require("tape"); |
| |
| var protobuf = require(".."); |
| |
| tape.test("exposure handlers", function(test) { |
| var root = new protobuf.Root(); |
| |
| var ns = new protobuf.Namespace("MyNamespace"); |
| root.add(ns); |
| test.ok(root.MyNamespace, "should expose namespaces on roots"); |
| |
| var type = new protobuf.Type("MyType"); |
| ns.add(type); |
| test.ok(root.MyNamespace.MyType, "should expose types on namespaces"); |
| |
| var lcType = new protobuf.Type("myType"); |
| ns.add(lcType); |
| test.notOk(root.MyNamespace.myType, "should not expose lower-cased types on namespaces"); |
| |
| var enm = new protobuf.Enum("MyEnum", {}); |
| type.add(enm); |
| test.ok(root.MyNamespace.MyType.MyEnum, "should expose enums on types"); |
| |
| var lcEnm = new protobuf.Enum("myEnum", {}); |
| type.add(lcEnm); |
| test.notOk(root.MyNamespace.MyType.myEnum, "should not expose lower-cased enums on types"); |
| |
| ns.remove(type); |
| test.notOk(root.MyNamespace.MyType, "should unexpose types on namespaces"); |
| |
| type.remove(enm); |
| test.notOk(type.MyEnum, "should unexpose enums on types, even if no longer part of a root"); |
| |
| root.remove(ns); |
| test.notOk(root.MyNamespace, "should unexpose namespaces on roots"); |
| |
| test.end(); |
| }); |