mirror of
https://github.com/protobufjs/protobuf.js.git
synced 2025-12-08 20:58:55 +00:00
* enum valuesOptions support * update tests a little, fix api docs * tests: reverting bad conflict resolution * test: put test.end() in its proper place Co-authored-by: Alexander Fenster <fenster@google.com> Co-authored-by: Alexander Fenster <github@fenster.name>
92 lines
2.1 KiB
JavaScript
92 lines
2.1 KiB
JavaScript
var tape = require("tape");
|
|
|
|
var protobuf = require("..");
|
|
|
|
tape.test("reflected enums", function(test) {
|
|
|
|
var enm = new protobuf.Enum("Test", {
|
|
a: 1,
|
|
b: 2
|
|
});
|
|
|
|
var enm_allow_alias = new protobuf.Enum( 'AliasTest',
|
|
{ a: 0 }, { allow_alias: true } );
|
|
|
|
test.throws(function() {
|
|
new protobuf.Enum("Test", true);
|
|
}, TypeError, "should throw if values is specified but not an object");
|
|
|
|
test.same(enm.valuesById, {
|
|
1: "a",
|
|
2: "b"
|
|
}, "should also expose their values by id");
|
|
|
|
test.throws(function() {
|
|
enm.add(2, 2);
|
|
}, TypeError, "should throw if name is not a string");
|
|
|
|
test.throws(function() {
|
|
enm.add("c", 1.5);
|
|
}, TypeError, "should throw if id is not an integer");
|
|
|
|
test.throws(function() {
|
|
enm.add("b", 2);
|
|
}, Error, "should throw if name is a duplicate");
|
|
|
|
test.throws(function() {
|
|
enm.add("c", 2);
|
|
}, Error, "should throw if id is a duplicate, without allow_alias option");
|
|
|
|
enm.add("c", 3);
|
|
test.same(enm.values, {
|
|
a: 1,
|
|
b: 2,
|
|
c: 3
|
|
}, "should allow adding new values");
|
|
test.same(enm.valuesById, {
|
|
1: "a",
|
|
2: "b",
|
|
3: "c"
|
|
}, "should also expose any new values by id");
|
|
|
|
test.throws(function() {
|
|
enm.remove(1);
|
|
}, TypeError, "should throw if name is not a string");
|
|
|
|
test.throws(function() {
|
|
enm.remove("d");
|
|
}, Error, "should throw if name is not present");
|
|
|
|
enm.remove("b");
|
|
test.same(enm.values, {
|
|
a: 1,
|
|
c: 3
|
|
}, "should allow removing existing values");
|
|
test.same(enm.valuesById, {
|
|
1: "a",
|
|
3: "c"
|
|
}, "should no longer expose any removed values by id");
|
|
|
|
test.same(enm.toJSON(), {
|
|
values: {
|
|
a: 1,
|
|
c: 3
|
|
}
|
|
}, "should export values to JSON");
|
|
|
|
enm_allow_alias.add( 'b', 0 );
|
|
test.same( enm_allow_alias.values, {
|
|
a: 0,
|
|
b: 0
|
|
});
|
|
|
|
enm.add('e', 4, undefined, {'(test_option)': 'test_value'});
|
|
test.same( enm.valuesOptions, {
|
|
'e': {
|
|
'(test_option)': 'test_value'
|
|
}
|
|
});
|
|
|
|
test.end();
|
|
});
|