UNPKG

2.14 kBJavaScriptView Raw
1// Any copyright is dedicated to the Public Domain.
2// http://creativecommons.org/publicdomain/zero/1.0/
3
4var portname = process.argv[2] || 'A';
5var test = require('tinytap');
6var async = require('async');
7var tessel = require('tessel');
8var rfidLib = require('../')
9var rfid;
10
11test.count(7);
12
13async.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)