109 lines
3.9 KiB
JavaScript
109 lines
3.9 KiB
JavaScript
/* jasmine specs for primitives/SensingPrims.js go here */
|
|
|
|
describe('SensingPrims', function() {
|
|
var sensingPrims;
|
|
beforeEach(function() {
|
|
sensingPrims = SensingPrims;
|
|
realDate = Date;
|
|
});
|
|
|
|
afterEach(function() {
|
|
Date = realDate;
|
|
});
|
|
|
|
describe('primTimestamp', function() {
|
|
beforeEach(function() {
|
|
/* MonkeyPatching the built-in Javascript Date */
|
|
var epochDate = new Date(2000, 0, 1);
|
|
var nowDate = new Date(2014, 5, 16);
|
|
Date = function() {
|
|
return (arguments.length ? epochDate : nowDate);
|
|
};
|
|
});
|
|
|
|
it('should return the days since 2000', function() {
|
|
expect(sensingPrims.prototype.primTimestamp()).toBeCloseTo(5280);
|
|
});
|
|
});
|
|
|
|
describe('primTimeDate', function() {
|
|
beforeEach(function() {
|
|
/* MonkeyPatching the built-in Javascript Date */
|
|
Date = function() {
|
|
return {
|
|
'getFullYear': function() { return 2014;},
|
|
'getMonth': function() { return 4;},
|
|
'getDate': function() { return 16;},
|
|
'getDay': function() { return 4;},
|
|
'getHours': function() { return 9;},
|
|
'getMinutes': function() { return 18;},
|
|
'getSeconds': function() { return 36;},
|
|
'getTime': function() {}
|
|
};
|
|
};
|
|
});
|
|
|
|
it('should return the year', function() {
|
|
var block = {'args': ['year']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(2014);
|
|
});
|
|
|
|
it('should return the month of the year', function() {
|
|
var block = {'args': ['month']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(5);
|
|
});
|
|
|
|
it('should return the day of the week', function() {
|
|
var block = {'args': ['day of week']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(5);
|
|
});
|
|
|
|
it('should return the hour of the day', function() {
|
|
var block = {'args': ['hour']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(9);
|
|
});
|
|
|
|
it('should return the minute of the hour', function() {
|
|
var block = {'args': ['minute']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(18);
|
|
});
|
|
|
|
it('should return the second of the minute', function() {
|
|
var block = {'args': ['second']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(36);
|
|
});
|
|
|
|
it('should return the 0 on year', function() {
|
|
var block = {'args': ['anythingElse']};
|
|
expect(sensingPrims.prototype.primTimeDate(block)).toEqual(0);
|
|
});
|
|
});
|
|
|
|
describe('primAnswer', function() {
|
|
beforeEach(function() {
|
|
interp = interpreterMock({'targetSprite': new targetMock()});
|
|
});
|
|
|
|
it('should return the answer variable from the targetedSprite', function() {
|
|
expect(sensingPrims.prototype.primAnswer()).toBe(12);
|
|
});
|
|
});
|
|
|
|
describe('primDoAsk', function() {
|
|
var askBlock, targetSpriteMock;
|
|
beforeEach(function() {
|
|
targetSpriteMock = targetMock();
|
|
askBlock = {'args': 'what to ask'};
|
|
interp = interpreterMock({'targetSprite': targetSpriteMock}, {'arg': askBlock});
|
|
});
|
|
|
|
it('should call the showBubble method on the targetedSprite', function() {
|
|
spyOn(window, "showBubble");
|
|
spyOn(targetSpriteMock, "showAsk");
|
|
sensingPrims.prototype.primDoAsk(askBlock);
|
|
expect(window.showBubble).toHaveBeenCalledWith({args:'what to ask'}, 'doAsk');
|
|
expect(targetSpriteMock.showAsk).toHaveBeenCalled;
|
|
expect(interp.activeThread.paused).toBe(true);
|
|
});
|
|
});
|
|
});
|