blob: 46cc05ee3d958c7bda72b4b0585a322bb0d8bd88 [file] [log] [blame]
<!--
Copyright 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!DOCTYPE html>
<html>
<head>
<script src="webui_resource_test.js"></script>
<script src="player_manager.js"></script>
<script src="player_info.js"></script>
</head>
<body>
<script>
window.setUp = function() {
window.pi = new PlayerInfo('example_id');
};
window.tearDown = function() {
window.pi = null;
};
// Test that an ID is set correctly.
window.testConstructorStringID = function() {
assertEquals('example_id', window.pi.id);
};
// Test that numerical IDs are valid.
window.testConstructorNumberId = function() {
var pi = new PlayerInfo(5);
assertEquals(5, pi.id);
};
// Make sure that a new PlayerInfo has no events.
window.testEmptyEvents = function() {
assertEquals(0, window.pi.allEvents.length);
};
// Check that the most recent property gets updated.
window.testAddProperty = function() {
var key = 'key',
value = 'value',
value2 = 'value2';
window.pi.addProperty(0, key, value);
assertEquals(value, window.pi.properties[key]);
window.pi.addProperty(0, key, value2);
assertEquals(value2, window.pi.properties[key]);
};
// Make sure that the first timestamp that gets sent
// is recorded as the base timestamp.
window.testFirstTimestamp = function() {
var pi = new PlayerInfo('example_ID');
var timestamp = 5000;
pi.addProperty(timestamp, 'key', 'value');
assertEquals(timestamp, pi.firstTimestamp_);
};
// Adding a property with a non-string key should
// throw an exception.
window.testWrongKeyType = function() {
var pi = new PlayerInfo('example_ID');
assertThrows(function() {
pi.addProperty(0, 5, 'some value');
});
};
// Subsequent events should have their log offset based
// on the first timestamp added.
window.testAddPropertyTimestampOffset = function() {
var firstTimestamp = 500,
secondTimestamp = 550,
deltaT = secondTimestamp - firstTimestamp,
key = 'key',
value = 'value';
var pi = new PlayerInfo('example_ID');
pi.addProperty(firstTimestamp, key, value);
pi.addProperty(secondTimestamp, key, value);
assertEquals(firstTimestamp, pi.firstTimestamp_);
assertEquals(0, pi.allEvents[0].time);
assertEquals(deltaT, pi.allEvents[1].time);
assertTrue(undefined !== pi.pastValues[key]);
console.log(pi.pastValues);
assertEquals(0, pi.pastValues[key][0].time);
assertEquals(deltaT, pi.pastValues[key][1].time);
};
// Check to make sure that properties are correctly
// added to the relevant pastValues array.
window.testAddPropertyPastValues = function() {
var pi = new PlayerInfo('example_ID'),
timestamp = 50,
key = 'key',
value = 'value';
pi.addProperty(timestamp, key, value);
assertEquals(value, pi.pastValues[key][0].value);
assertEquals(key, pi.pastValues[key][0].key);
assertEquals(0, pi.pastValues[key][0].time);
};
// The list of all events should be recorded in correctly.
window.testAllEvents = function() {
var pi = new PlayerInfo('example_ID'),
timestamp = 50,
key = 'key',
value = 'value',
key2 = 'key2',
value2 = 'value2';
pi.addProperty(timestamp, key, value);
assertEquals(value, pi.allEvents[0].value);
assertEquals(key, pi.allEvents[0].key);
pi.addProperty(timestamp, key2, value2);
assertEquals(value2, pi.allEvents[1].value);
assertEquals(key2, pi.allEvents[1].key);
};
// Using noRecord should make it not show up in allEvents,
// but it should still show up in pastValues[key].
window.testNoRecord = function() {
var pi = new PlayerInfo('example_ID'),
timestamp = 50,
key = 'key',
value = 'value';
pi.addPropertyNoRecord(timestamp, key, value);
assertEquals(value, pi.properties[key]);
assertEquals(0, pi.allEvents.length);
assertEquals(1, pi.pastValues[key].length);
};
runTests();
</script>
</body>
</html>