1 |
|
2 |
|
3 |
|
4 | var portname = process.argv[2] || 'A';
|
5 | var test = require('tinytap');
|
6 | var async = require('async');
|
7 | var tessel = require('tessel');
|
8 | var rfidLib = require('../')
|
9 | var rfid;
|
10 |
|
11 | test.count(7);
|
12 |
|
13 | async.series([
|
14 | test("Connecting to RFID card on correct port", function(t) {
|
15 | rfidLib.use(tessel.port[portname], {read: true, delay: 0}, function(err, r) {
|
16 | t.equal(err, null, "there is no error on creation in callback");
|
17 | rfid = r;
|
18 | var timeout = setTimeout(function() {
|
19 | t.fail("Ready event not fired.");
|
20 | }, 1000);
|
21 | rfid.on('ready', function() {
|
22 | clearTimeout(timeout);
|
23 | t.ok(true, true, "RFID ready event is called");
|
24 | t.end();
|
25 | })
|
26 | });
|
27 | }),
|
28 |
|
29 | test("Basic Reading", function(t) {
|
30 | var timeout = setTimeout(function() {
|
31 | t.fail("No RFID Card read.");
|
32 | }, 1000);
|
33 | rfid.once("read", function(data) {
|
34 | clearTimeout(timeout);
|
35 | t.equal(typeof data, 'object', "Argument on read event is an object");
|
36 | t.equal(Buffer.isBuffer(data.uid), true, "Provided data returns a Buffer UID");
|
37 | t.end();
|
38 | });
|
39 | }),
|
40 |
|
41 | test("Change RFID Polling Period", function(t) {
|
42 | var newPeriod = 2000;
|
43 |
|
44 | rfid.setPollPeriod(newPeriod, function(err){
|
45 | t.equal(err, null, "Error thrown on setting poll period with valid number");
|
46 |
|
47 | var i = 0;
|
48 | var first;
|
49 | var timeout;
|
50 | rfid.on('data', function(data) {
|
51 | i++;
|
52 | if (i === 1) {
|
53 | first = new Date();
|
54 | }
|
55 | else if (i === 2) {
|
56 | clearTimeout(timeout);
|
57 | rfid.removeAllListeners('data');
|
58 | var time = new Date() - first;
|
59 | t.equal(time > newPeriod, true, "Period not changed to be greater");
|
60 | var proportionOver = Math.abs(time-newPeriod)/newPeriod;
|
61 | t.equal(proportionOver < 0.2 , true, "Period is way over requested");
|
62 | t.end();
|
63 | }
|
64 | });
|
65 |
|
66 | timeout = setTimeout(function() {
|
67 | t.fail("Data events not hit after poll period changed.");
|
68 | }, newPeriod * 2)
|
69 | })
|
70 |
|
71 | })
|
72 | ]
|
73 | )
|