|
| 1 | +import {describe, test, assert, beforeEach} from 'vitest'; |
| 2 | +import { |
| 3 | + MaskSegmentViewHelper |
| 4 | +} from '../../src/image/maskSegmentViewHelper.js'; |
| 5 | + |
| 6 | +/** |
| 7 | + * Tests for the 'image/maskSegmentViewHelper.js' file. |
| 8 | + */ |
| 9 | + |
| 10 | +describe('image', () => { |
| 11 | + |
| 12 | + let helper; |
| 13 | + |
| 14 | + beforeEach(() => { |
| 15 | + helper = new MaskSegmentViewHelper(); |
| 16 | + }); |
| 17 | + |
| 18 | + /** |
| 19 | + * Tests that isHidden returns false for a segment never added. |
| 20 | + * |
| 21 | + * @function module:tests/image~mask-segment-view-helper-is-hidden-initial |
| 22 | + */ |
| 23 | + test('MaskSegmentViewHelper isHidden returns false initially', () => { |
| 24 | + assert.notOk(helper.isHidden(1)); |
| 25 | + assert.notOk(helper.isHidden(99)); |
| 26 | + }); |
| 27 | + |
| 28 | + /** |
| 29 | + * Tests that a segment is hidden after addToHidden. |
| 30 | + * |
| 31 | + * @function module:tests/image~mask-segment-view-helper-add-to-hidden |
| 32 | + */ |
| 33 | + test('MaskSegmentViewHelper addToHidden makes segment hidden', () => { |
| 34 | + helper.addToHidden(1); |
| 35 | + assert.ok(helper.isHidden(1), 'hidden after add'); |
| 36 | + assert.notOk(helper.isHidden(2), 'other segments unaffected'); |
| 37 | + }); |
| 38 | + |
| 39 | + /** |
| 40 | + * Tests that addToHidden is a no-op for an already-hidden segment. |
| 41 | + * |
| 42 | + * @function module:tests/image~mask-segment-view-helper-add-duplicate |
| 43 | + */ |
| 44 | + test('MaskSegmentViewHelper addToHidden ignores duplicate', () => { |
| 45 | + helper.addToHidden(1); |
| 46 | + helper.addToHidden(1); // duplicate — should not throw or double-add |
| 47 | + helper.removeFromHidden(1); |
| 48 | + assert.notOk(helper.isHidden(1), 'single remove is enough'); |
| 49 | + }); |
| 50 | + |
| 51 | + /** |
| 52 | + * Tests that removeFromHidden unhides a hidden segment. |
| 53 | + * |
| 54 | + * @function module:tests/image~mask-segment-view-helper-remove-from-hidden |
| 55 | + */ |
| 56 | + test('MaskSegmentViewHelper removeFromHidden unhides a segment', () => { |
| 57 | + helper.addToHidden(1); |
| 58 | + helper.addToHidden(2); |
| 59 | + helper.removeFromHidden(1); |
| 60 | + assert.notOk(helper.isHidden(1), 'segment 1 removed'); |
| 61 | + assert.ok(helper.isHidden(2), 'segment 2 unaffected'); |
| 62 | + }); |
| 63 | + |
| 64 | + /** |
| 65 | + * Tests that removeFromHidden is a no-op for a segment not in the list. |
| 66 | + * |
| 67 | + * @function module:tests/image~mask-segment-view-helper-remove-unknown |
| 68 | + */ |
| 69 | + test('MaskSegmentViewHelper removeFromHidden is a no-op for unknown', () => { |
| 70 | + helper.addToHidden(1); |
| 71 | + helper.removeFromHidden(99); // no-op |
| 72 | + assert.ok(helper.isHidden(1), 'existing segment unaffected'); |
| 73 | + }); |
| 74 | + |
| 75 | + /** |
| 76 | + * Tests that multiple segments can be independently hidden and shown. |
| 77 | + * |
| 78 | + * @function module:tests/image~mask-segment-view-helper-multiple |
| 79 | + */ |
| 80 | + test('MaskSegmentViewHelper manages multiple segments independently', () => { |
| 81 | + helper.addToHidden(1); |
| 82 | + helper.addToHidden(2); |
| 83 | + helper.addToHidden(3); |
| 84 | + helper.removeFromHidden(2); |
| 85 | + assert.ok(helper.isHidden(1), 'seg 1 still hidden'); |
| 86 | + assert.notOk(helper.isHidden(2), 'seg 2 removed'); |
| 87 | + assert.ok(helper.isHidden(3), 'seg 3 still hidden'); |
| 88 | + }); |
| 89 | + |
| 90 | +}); |
0 commit comments