// META: title=SMS Receiver API: Constructor 'use strict'; promise_test(async t => { let used = false; new SMSReceiver({ get timeout() { used = true; return 60; } }); assert_true(used, 'constructor options "timeout" member was used'); }, 'constructor uses timeout property'); promise_test(async t => { try { new SMSReceiver({timeout: 0}); assert_unreached('Timeout 0 should reject'); } catch (error) { assert_equals(error.name, 'TypeError'); } }, 'constructor throws with invalid timeout (0)'); promise_test(async t => { try { new SMSReceiver({timeout: null}); assert_unreached('Timeout of null should reject'); } catch (error) { assert_equals(error.name, 'TypeError'); } }, 'constructor throws with invalid timeout (null)'); promise_test(async t => { try { new SMSReceiver({timeout: -1}); assert_unreached('Timeout negative numbers should reject'); } catch (error) { assert_equals(error.name, 'TypeError'); } }, 'constructor throws with invalid timeout (-1)'); promise_test(async t => { try { new SMSReceiver({timeout: NaN}); assert_unreached('Timeout of NaN should reject'); } catch (error) { assert_equals(error.name, 'TypeError'); } }, 'constructor throws with invalid timeout (NaN)'); promise_test(async t => { new SMSReceiver(); }, 'constructor uses a default value for the timeout when none is passed'); promise_test(async t => { new SMSReceiver({timeout: undefined}); }, 'constructor uses a default value for the timeout');