Skip to content

Commit 6f8d3bb

Browse files
committed
add unit tests for SignalCommandMap class
1 parent f6960e3 commit 6f8d3bb

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
// ------------------------------------------------------------------------------
2+
// Copyright (c) 2017 RobotlegsJS. All Rights Reserved.
3+
//
4+
// NOTICE: You are permitted to use, modify, and distribute this file
5+
// in accordance with the terms of the license agreement accompanying it.
6+
// ------------------------------------------------------------------------------
7+
8+
import "../../../../../entry.ts";
9+
10+
import sinon = require("sinon");
11+
12+
import { assert } from "chai";
13+
14+
import {
15+
ISignal,
16+
MonoSignal,
17+
OnceSignal,
18+
Signal,
19+
DeluxeSignal,
20+
PrioritySignal
21+
} from "@robotlegsjs/signals";
22+
23+
import {
24+
injectable,
25+
IContext,
26+
IInjector,
27+
ICommandMapper,
28+
ICommandUnmapper,
29+
Context,
30+
CommandMapper
31+
} from "@robotlegsjs/core";
32+
33+
import { SignalCommandMap } from "../../../../../../src/robotlegs/bender/extensions/signalCommandMap/impl/SignalCommandMap";
34+
35+
import { NullCommand } from "../support/NullCommand";
36+
37+
describe("SignalCommandMap", () => {
38+
let signal: ISignal;
39+
let context: IContext;
40+
let injector: IInjector;
41+
let subject: SignalCommandMap;
42+
43+
beforeEach(() => {
44+
signal = new Signal();
45+
context = new Context();
46+
injector = context.injector;
47+
subject = new SignalCommandMap(context);
48+
});
49+
50+
afterEach(() => {
51+
signal.removeAll();
52+
if (context.initialized) {
53+
context.destroy();
54+
}
55+
signal = null;
56+
context = null;
57+
injector = null;
58+
subject = null;
59+
});
60+
61+
it("map_creates_mapper", () => {
62+
let mapper: any = subject.map(Signal);
63+
64+
assert.instanceOf(mapper, CommandMapper);
65+
});
66+
67+
it("test_map_returns_new_mapper_when_identical_signal", () => {
68+
let mapper1: ICommandMapper = subject.map(Signal);
69+
let mapper2: ICommandMapper = subject.map(Signal);
70+
71+
assert.isNotNull(mapper1);
72+
assert.isNotNull(mapper2);
73+
assert.notEqual(mapper1, mapper2);
74+
});
75+
76+
it("test_unmap_returns_unmapper", () => {
77+
let mapper: any = subject.unmap(Signal);
78+
79+
assert.instanceOf(mapper, CommandMapper);
80+
});
81+
82+
it("test_robust_unmapping_non_existent_mappings", () => {
83+
subject.unmap(Signal).fromCommand(NullCommand);
84+
});
85+
86+
it("mapping_processor_is_called", () => {
87+
let callCount: number = 0;
88+
subject.addMappingProcessor((mapping: any) => {
89+
callCount++;
90+
});
91+
subject.map(Signal).toCommand(NullCommand);
92+
assert.equal(callCount, 1);
93+
});
94+
95+
it("mapping_processors_are_called", () => {
96+
let callCount: number = 0;
97+
subject.addMappingProcessor((mapping: any) => {
98+
callCount++;
99+
});
100+
subject.addMappingProcessor((mapping: any) => {
101+
callCount++;
102+
});
103+
subject.addMappingProcessor((mapping: any) => {
104+
callCount++;
105+
});
106+
subject.map(Signal).toCommand(NullCommand);
107+
assert.equal(callCount, 3);
108+
});
109+
110+
it("mapping_processor_added_twice_is_called_once", () => {
111+
let callCount: number = 0;
112+
let handler: Function = (mapping: any) => {
113+
callCount++;
114+
};
115+
subject.addMappingProcessor(handler);
116+
subject.addMappingProcessor(handler);
117+
subject.map(Signal).toCommand(NullCommand);
118+
assert.equal(callCount, 1);
119+
});
120+
});

0 commit comments

Comments
 (0)