11cb0ef41Sopenharmony_citest(function() { 21cb0ef41Sopenharmony_ci assert_true((self.performance !== undefined), "self.performance exists"); 31cb0ef41Sopenharmony_ci assert_equals(typeof self.performance, "object", "self.performance is an object"); 41cb0ef41Sopenharmony_ci assert_equals((typeof self.performance.now), "function", "self.performance.now() is a function"); 51cb0ef41Sopenharmony_ci assert_equals(typeof self.performance.now(), "number", "self.performance.now() returns a number"); 61cb0ef41Sopenharmony_ci}, "self.performance.now() is a function that returns a number"); 71cb0ef41Sopenharmony_ci 81cb0ef41Sopenharmony_citest(function() { 91cb0ef41Sopenharmony_ci assert_true(self.performance.now() > 0); 101cb0ef41Sopenharmony_ci}, "self.performance.now() returns a positive number"); 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_citest(function() { 131cb0ef41Sopenharmony_ci var now1 = self.performance.now(); 141cb0ef41Sopenharmony_ci var now2 = self.performance.now(); 151cb0ef41Sopenharmony_ci assert_true((now2-now1) >= 0); 161cb0ef41Sopenharmony_ci }, "self.performance.now() difference is not negative"); 171cb0ef41Sopenharmony_ci 181cb0ef41Sopenharmony_ciasync_test(function() { 191cb0ef41Sopenharmony_ci // Check whether the performance.now() method is close to Date() within 30ms (due to inaccuracies) 201cb0ef41Sopenharmony_ci var initial_hrt = self.performance.now(); 211cb0ef41Sopenharmony_ci var initial_date = Date.now(); 221cb0ef41Sopenharmony_ci this.step_timeout(function() { 231cb0ef41Sopenharmony_ci var final_hrt = self.performance.now(); 241cb0ef41Sopenharmony_ci var final_date = Date.now(); 251cb0ef41Sopenharmony_ci assert_approx_equals(final_hrt - initial_hrt, final_date - initial_date, 30, 'High resolution time value increased by approximately the same amount as time from date object'); 261cb0ef41Sopenharmony_ci this.done(); 271cb0ef41Sopenharmony_ci }, 2000); 281cb0ef41Sopenharmony_ci}, 'High resolution time has approximately the right relative magnitude'); 291cb0ef41Sopenharmony_ci 301cb0ef41Sopenharmony_citest(function() { 311cb0ef41Sopenharmony_ci var didHandle = false; 321cb0ef41Sopenharmony_ci self.performance.addEventListener("testEvent", function() { 331cb0ef41Sopenharmony_ci didHandle = true; 341cb0ef41Sopenharmony_ci }, { once: true} ); 351cb0ef41Sopenharmony_ci self.performance.dispatchEvent(new Event("testEvent")); 361cb0ef41Sopenharmony_ci assert_true(didHandle, "Performance extends EventTarget, so event dispatching should work."); 371cb0ef41Sopenharmony_ci}, "Performance interface extends EventTarget."); 38