File tree Expand file tree Collapse file tree 2 files changed +64
-0
lines changed
Expand file tree Collapse file tree 2 files changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ var L = require ( '_linklist' ) ;
2+ function Set ( ) {
3+ this . list = { } ;
4+ L . init ( this . list ) ;
5+ }
6+ exports . Set = Set ;
7+
8+
9+ exports . create = function ( ) {
10+ return new Set ( ) ;
11+ } ;
12+
13+
14+ Set . prototype . add = function ( obj ) {
15+ L . init ( obj ) ;
16+ L . append ( this . list , obj ) ;
17+ obj . __setMembership = this ;
18+ } ;
19+
20+
21+ Set . prototype . remove = function ( obj ) {
22+ L . remove ( obj ) ;
23+ obj . __setMembership = null ;
24+ } ;
25+
26+
27+ Set . prototype . contains = function ( obj ) {
28+ return obj . __setMembership === this ;
29+ } ;
Original file line number Diff line number Diff line change 1+ var common = require ( '../common' ) ;
2+ var set = require ( '_set' ) ;
3+ var assert = require ( 'assert' ) ;
4+
5+
6+ var s = set . create ( ) ;
7+
8+ var A = { name : "A" } ;
9+ var B = { name : "B" } ;
10+ var C = { name : "C" } ;
11+ var D = { name : "D" } ;
12+
13+
14+ s . add ( A ) ;
15+
16+ assert . ok ( s . contains ( A ) ) ;
17+ assert . ok ( ! s . contains ( B ) ) ;
18+ assert . ok ( ! s . contains ( C ) ) ;
19+ assert . ok ( ! s . contains ( D ) ) ;
20+
21+ s . remove ( A ) ;
22+
23+ assert . ok ( ! s . contains ( A ) ) ;
24+ assert . ok ( ! s . contains ( B ) ) ;
25+ assert . ok ( ! s . contains ( C ) ) ;
26+ assert . ok ( ! s . contains ( D ) ) ;
27+
28+ s . add ( A ) ;
29+ s . add ( B ) ;
30+
31+
32+ assert . ok ( s . contains ( A ) ) ;
33+ assert . ok ( s . contains ( B ) ) ;
34+ assert . ok ( ! s . contains ( C ) ) ;
35+ assert . ok ( ! s . contains ( D ) ) ;
You can’t perform that action at this time.
0 commit comments