UNPKG

ecmarkup

Version:

Custom element definitions and core utilities for markup that specifies ECMAScript and related technologies.

45 lines (38 loc) 1.48 kB
var assert = require('assert'); var sectionNums = require('../lib/clauseNums') describe('clause id generation', function() { var iter; beforeEach(function() { iter = sectionNums.iterator(); }); specify('generating clause ids', function() { assert.strictEqual(iter.next(0).value, '1'); assert.strictEqual(iter.next(1).value, '1.1'); assert.strictEqual(iter.next(1).value, '1.2'); assert.strictEqual(iter.next(2).value, '1.2.1'); assert.strictEqual(iter.next(0).value, '2'); assert.strictEqual(iter.next(0, true).value, 'A'); assert.strictEqual(iter.next(1, true).value, 'A.1'); assert.strictEqual(iter.next(1, true).value, 'A.2'); assert.strictEqual(iter.next(2, true).value, 'A.2.1'); assert.strictEqual(iter.next(0, true).value, 'B'); }) specify('error thrown for skipping clauses', function() { assert.throws(function() { iter.next(2); }, /Skipped clause/) }); specify('error thrown for non-annex following annex', function() { assert.throws(function() { iter.next(0); iter.next(0, true); iter.next(0); }, /Clauses cannot follow annexes/) }); specify('error thrown for annex not starting at depth 0', function() { assert.throws(function() { iter.next(0); iter.next(1, true); }, /First annex must be at depth 0/) }); });