protobufjs
Version:
Protocol Buffers for JavaScript.
33 lines (24 loc) • 1.37 kB
JavaScript
var tape = require("tape");
var protobuf = require(".."),
Namespace = protobuf.Namespace,
Type = protobuf.Type,
Field = protobuf.Field;
tape.test("extension fields", function(test) {
var root = new protobuf.Root({ noGoogleTypes: true }),
ns = new Namespace("my"),
type = new Type("DeclaringType"),
declaringField = new Field("declaringField", 1, "string", "optional", "ExtendedType");
root.add(ns.add(type.add(declaringField)));
test.deepEqual(root.deferred[0], declaringField, "should be deferred until their extended type can be resolved");
var extendedType = new Type("ExtendedType");
ns.add(extendedType);
var extensionField = extendedType.get(declaringField.getFullName());
test.equal(extensionField, declaringField.extensionField, "should become available once their extended type is known");
type.remove(declaringField);
extensionField = extendedType.get(declaringField.getFullName());
test.equal(extensionField, null, "should become unavailable when their declaring field is removed");
type.add(declaringField);
extensionField = extendedType.get(declaringField.getFullName());
test.equal(extensionField, declaringField.extensionField, "should become instantly available if their extended type is knwon");
test.end();
});