public void TestStartFinishRecording() { ButtonPressingMetric bpm = new ButtonPressingMetric(); Assert.IsFalse(bpm.isRecording); // isRecording start out false bpm.startRecording(); Assert.IsTrue(bpm.isRecording); // Should be true now bpm.finishRecording(); Assert.IsFalse(bpm.isRecording); // Should be false now bpm.startRecording(); Assert.IsTrue(bpm.isRecording); bpm.startRecording(); Assert.IsTrue(bpm.isRecording); // Redundant calls to startRecording still keep it true bpm.finishRecording(); Assert.IsFalse(bpm.isRecording); bpm.finishRecording(); Assert.IsFalse(bpm.isRecording); // Redundant calls to finishRecording still keep is false }
public void TestRecordEvent() { // Test adding null event (state of bpm1 shouldn't change) ButtonPressingMetric bpm1 = new ButtonPressingMetric(); bpm1.startRecording(); Assert.IsEmpty(bpm1.eventList); Assert.IsTrue(bpm1.isRecording); bpm1.recordEvent(null); Assert.IsEmpty(bpm1.eventList); // Test adding events to a ButtonPressingMetric which has not started recording ButtonPressingMetric bpm2 = new ButtonPressingMetric(); Assert.IsFalse(bpm2.isRecording); Assert.IsEmpty(bpm2.eventList); bpm2.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 1), KeyCode.Joystick8Button4, true)); Assert.IsEmpty(bpm2.eventList); // Test adding valid events to a ButtonPressingMetric which has started recording ButtonPressingMetric bpm3 = new ButtonPressingMetric(); bpm3.startRecording(); Assert.IsTrue(bpm3.isRecording); Assert.IsEmpty(bpm3.eventList); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 1), KeyCode.Joystick8Button4, true)); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 2), KeyCode.Delete, false)); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 3), KeyCode.E, false)); Assert.AreEqual(3, bpm3.eventList.Count); Assert.AreEqual(new System.DateTime(2021, 2, 1), bpm3.eventList[0].eventTime); Assert.AreEqual(KeyCode.Joystick8Button4, bpm3.eventList[0].keyCode); Assert.IsTrue(bpm3.eventList[0].keyDown); Assert.AreEqual(new System.DateTime(2021, 2, 2), bpm3.eventList[1].eventTime); Assert.AreEqual(KeyCode.Delete, bpm3.eventList[1].keyCode); Assert.IsFalse(bpm3.eventList[1].keyDown); Assert.AreEqual(new System.DateTime(2021, 2, 3), bpm3.eventList[2].eventTime); Assert.AreEqual(KeyCode.E, bpm3.eventList[2].keyCode); Assert.IsFalse(bpm3.eventList[2].keyDown); }
public void TestGetJSON() { // Test getJSON() when metric has no records ButtonPressingMetric bpm1 = new ButtonPressingMetric(); Assert.IsEmpty(bpm1.eventList); JObject json1 = bpm1.getJSON(); Assert.IsNotNull(json1); Assert.IsNotNull(json1["metricName"]); // JSON entry "buttonPressing" should be empty, as nothing has been recorded Assert.IsEmpty(json1["eventList"]); // Test getJSON() with one record ButtonPressingMetric bpm2 = new ButtonPressingMetric(); bpm2.startRecording(); Assert.IsTrue(bpm2.isRecording); Assert.IsEmpty(bpm2.eventList); bpm2.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 1), KeyCode.B, true)); bpm2.finishRecording(); JObject json2 = bpm2.getJSON(); Assert.IsNotNull(json2); Assert.IsNotNull(json2["metricName"]); JArray eventList2 = (JArray)json2["eventList"]; Assert.AreEqual("buttonPressing", json2["metricName"].ToString()); Assert.AreEqual(1, eventList2.Count); Assert.AreEqual("2021-02-01 12:00:00 AM", eventList2[0]["eventTime"].ToString()); Assert.AreEqual(KeyCode.B, eventList2[0]["keyCode"].ToObject <KeyCode>()); Assert.AreEqual(true, eventList2[0]["keyDown"].ToObject <bool>()); // Test getJSON() with multiple records ButtonPressingMetric bpm3 = new ButtonPressingMetric(); bpm3.startRecording(); Assert.IsTrue(bpm3.isRecording); Assert.IsEmpty(bpm3.eventList); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 7, 13, 12, 15), KeyCode.A, true)); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2021, 2, 7, 13, 12, 16), KeyCode.A, false)); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2022, 4, 1), KeyCode.LeftAlt, true)); bpm3.finishRecording(); bpm3.recordEvent(new ButtonPressingEvent(new System.DateTime(2023, 1, 3), KeyCode.M, false)); // record an event after finishing recording Assert.IsFalse(bpm3.isRecording); JObject json3 = bpm3.getJSON(); Assert.IsNotNull(json3); Assert.IsNotNull(json3["metricName"]); JArray eventList3 = (JArray)json3["eventList"]; Assert.AreEqual(3, eventList3.Count); Assert.AreEqual("2021-02-07 1:12:15 PM", eventList3[0]["eventTime"].ToString()); Assert.AreEqual(KeyCode.A, eventList3[0]["keyCode"].ToObject <KeyCode>()); Assert.AreEqual(true, eventList3[0]["keyDown"].ToObject <bool>()); Assert.AreEqual("2021-02-07 1:12:16 PM", eventList3[1]["eventTime"].ToString()); Assert.AreEqual(KeyCode.A, eventList3[1]["keyCode"].ToObject <KeyCode>()); Assert.AreEqual(false, eventList3[1]["keyDown"].ToObject <bool>()); Assert.AreEqual("2022-04-01 12:00:00 AM", eventList3[2]["eventTime"].ToString()); Assert.AreEqual(KeyCode.LeftAlt, eventList3[2]["keyCode"].ToObject <KeyCode>()); Assert.AreEqual(true, eventList3[2]["keyDown"].ToObject <bool>()); }
// Begin the actual game, start recording metrics public void StartGame() { bpMetric.startRecording(); metricWriter = new MetricJSONWriter("Digger", DateTime.Now); // initialize metric data writer gameStartTime = Time.time; }