OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 #include "platform/assert.h" |
| 6 |
| 7 #include "vm/dart_api_impl.h" |
| 8 #include "vm/dart_api_state.h" |
| 9 #include "vm/globals.h" |
| 10 #include "vm/timeline.h" |
| 11 #include "vm/unit_test.h" |
| 12 |
| 13 namespace dart { |
| 14 |
| 15 TEST_CASE(TimelineEventIsValid) { |
| 16 // Create a test stream. |
| 17 TimelineStream stream; |
| 18 stream.Init("testStream", true); |
| 19 |
| 20 TimelineEvent event; |
| 21 |
| 22 // Starts invalid. |
| 23 EXPECT(!event.IsValid()); |
| 24 |
| 25 // Becomes valid. |
| 26 event.Instant(&stream, "hello"); |
| 27 EXPECT(event.IsValid()); |
| 28 |
| 29 // Becomes invalid. |
| 30 event.Reset(); |
| 31 EXPECT(!event.IsValid()); |
| 32 } |
| 33 |
| 34 |
| 35 TEST_CASE(TimelineEventDuration) { |
| 36 // Create a test stream. |
| 37 TimelineStream stream; |
| 38 stream.Init("testStream", true); |
| 39 |
| 40 // Create a test event. |
| 41 TimelineEvent event; |
| 42 event.DurationBegin(&stream, "apple"); |
| 43 // Measure the duration. |
| 44 int64_t current_duration = event.TimeDuration(); |
| 45 event.DurationEnd(); |
| 46 // Verify that duration is larger. |
| 47 EXPECT_GE(event.TimeDuration(), current_duration); |
| 48 } |
| 49 |
| 50 |
| 51 TEST_CASE(TimelineEventDurationPrintJSON) { |
| 52 // Create a test stream. |
| 53 TimelineStream stream; |
| 54 stream.Init("testStream", true); |
| 55 |
| 56 // Create a test event. |
| 57 TimelineEvent event; |
| 58 event.DurationBegin(&stream, "apple"); |
| 59 { |
| 60 // Test printing to JSON. |
| 61 JSONStream js; |
| 62 event.PrintJSON(&js); |
| 63 // Check category |
| 64 EXPECT_SUBSTRING("\"cat\":\"testStream\"", js.ToCString()); |
| 65 // Check name. |
| 66 EXPECT_SUBSTRING("\"name\":\"apple\"", js.ToCString()); |
| 67 // Check phase. |
| 68 EXPECT_SUBSTRING("\"ph\":\"X\"", js.ToCString()); |
| 69 // Check that ts key is present. |
| 70 EXPECT_SUBSTRING("\"ts\":", js.ToCString()); |
| 71 // Check that dur key is present. |
| 72 EXPECT_SUBSTRING("\"dur\":", js.ToCString()); |
| 73 } |
| 74 event.DurationEnd(); |
| 75 } |
| 76 |
| 77 |
| 78 TEST_CASE(TimelineEventArguments) { |
| 79 // Create a test stream. |
| 80 TimelineStream stream; |
| 81 stream.Init("testStream", true); |
| 82 |
| 83 // Create a test event. |
| 84 TimelineEvent event; |
| 85 |
| 86 // Allocate room for four arguments. |
| 87 event.SetNumArguments(4); |
| 88 // Reset. |
| 89 event.Reset(); |
| 90 |
| 91 event.DurationBegin(&stream, "apple"); |
| 92 event.SetNumArguments(2); |
| 93 event.CopyArgument(0, "arg1", "value1"); |
| 94 event.CopyArgument(1, "arg2", "value2"); |
| 95 event.DurationEnd(); |
| 96 } |
| 97 |
| 98 |
| 99 TEST_CASE(TimelineEventArgumentsPrintJSON) { |
| 100 // Create a test stream. |
| 101 TimelineStream stream; |
| 102 stream.Init("testStream", true); |
| 103 |
| 104 // Create a test event. |
| 105 TimelineEvent event; |
| 106 |
| 107 event.DurationBegin(&stream, "apple"); |
| 108 event.SetNumArguments(2); |
| 109 event.CopyArgument(0, "arg1", "value1"); |
| 110 event.CopyArgument(1, "arg2", "value2"); |
| 111 event.DurationEnd(); |
| 112 |
| 113 { |
| 114 // Test printing to JSON. |
| 115 JSONStream js; |
| 116 event.PrintJSON(&js); |
| 117 |
| 118 // Check both arguments. |
| 119 EXPECT_SUBSTRING("\"arg1\":\"value1\"", js.ToCString()); |
| 120 EXPECT_SUBSTRING("\"arg2\":\"value2\"", js.ToCString()); |
| 121 } |
| 122 } |
| 123 |
| 124 |
| 125 TEST_CASE(TimelineEventBufferPrintJSON) { |
| 126 Isolate* isolate = Isolate::Current(); |
| 127 TimelineEventBuffer* buffer = isolate->timeline_event_buffer(); |
| 128 JSONStream js; |
| 129 buffer->PrintJSON(&js); |
| 130 // Check the type. This test will fail if we ever make Timeline public. |
| 131 EXPECT_SUBSTRING("\"type\":\"_Timeline\"", js.ToCString()); |
| 132 // Check that there is a traceEvents array. |
| 133 EXPECT_SUBSTRING("\"traceEvents\":[", js.ToCString()); |
| 134 } |
| 135 |
| 136 } // namespace dart |
OLD | NEW |