| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| var test = require('prova'); |
| var addAttributes = require('../../../src/lib/add-attributes'); |
| |
| test('addAttributes', function(t) { |
| // Normal Cases: add nothing, add 1 thing, add multiple things |
| var obj = {}; |
| |
| addAttributes(obj, {}); |
| t.deepEqual(obj, {}); |
| |
| addAttributes(obj, {a: 'a'}); |
| t.deepEqual(obj, {a: 'a'}); |
| |
| addAttributes(obj, {b: 'b'}); |
| t.deepEqual(obj, {a: 'a', b: 'b'}); |
| |
| addAttributes(obj, {c: [3], d: function() { return 'd'; }}); |
| var expected = {a: 'a', b: 'b', c: [3], d: function() { return 'd'; }}; |
| for (var key1 in obj) { |
| if (obj.hasOwnProperty(key1)) { |
| t.ok('' + obj[key1] === '' + expected[key1]); // effectively equal |
| } |
| } |
| |
| // We don't replace existing attributes |
| addAttributes(obj, {a: 'will not replace'}); |
| for (var key2 in obj) { |
| if (obj.hasOwnProperty(key2)) { |
| t.ok('' + obj[key2] === '' + expected[key2]); // effectively equal |
| } |
| } |
| |
| t.end(); |
| }); |