Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Side by Side Diff: chrome/test/data/webui/bluetooth_internals_browsertest.js

Issue 2627243002: bluetooth: Add control for reading/writing of characteristics to internals page. (Closed)
Patch Set: Fix error in value input change listener Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Tests for chrome://bluetooth-internals 6 * @fileoverview Tests for chrome://bluetooth-internals
7 */ 7 */
8 8
9 /** @const {string} Path to source root. */ 9 /** @const {string} Path to source root. */
10 var ROOT_PATH = '../../../../'; 10 var ROOT_PATH = '../../../../';
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 /** 283 /**
284 * Returns a copy of fake service info object (variant 2). 284 * Returns a copy of fake service info object (variant 2).
285 * @return {!Object} 285 * @return {!Object}
286 */ 286 */
287 fakeServiceInfo2: function() { 287 fakeServiceInfo2: function() {
288 return { 288 return {
289 uuid: '0000180d-0000-1000-8000-00805f9b34fb', 289 uuid: '0000180d-0000-1000-8000-00805f9b34fb',
290 is_primary: true, 290 is_primary: true,
291 } 291 }
292 }, 292 },
293
294 /**
295 * Returns a copy of fake characteristic info object with all properties
296 * and all permissions bits set.
297 * @return {!Object}
298 */
299 fakeCharacteristicInfo1: function() {
300 return {
301 id: 'characteristic1',
302 uuid: '00002a19-0000-1000-8000-00805f9b34fb',
303 properties: Number.MAX_SAFE_INTEGER,
304 permissions: Number.MAX_SAFE_INTEGER,
305 last_known_value: [],
306 };
307 },
293 }; 308 };
294 309
295 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() { 310 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() {
296 /** @const */ var PageManager = cr.ui.pageManager.PageManager; 311 /** @const */ var PageManager = cr.ui.pageManager.PageManager;
297 312
298 var adapterFactory = null; 313 var adapterFactory = null;
299 var adapterFieldSet = null; 314 var adapterFieldSet = null;
300 var deviceTable = null; 315 var deviceTable = null;
301 var sidebarNode = null; 316 var sidebarNode = null;
302 var pageNames = ['adapter', 'devices']; 317 var pageNames = ['adapter', 'devices'];
303 318
304 var fakeAdapterInfo = this.fakeAdapterInfo; 319 var fakeAdapterInfo = this.fakeAdapterInfo;
305 var fakeDeviceInfo1 = this.fakeDeviceInfo1; 320 var fakeDeviceInfo1 = this.fakeDeviceInfo1;
306 var fakeDeviceInfo2 = this.fakeDeviceInfo2; 321 var fakeDeviceInfo2 = this.fakeDeviceInfo2;
307 var fakeDeviceInfo3 = this.fakeDeviceInfo3; 322 var fakeDeviceInfo3 = this.fakeDeviceInfo3;
308 var fakeServiceInfo1 = this.fakeServiceInfo1; 323 var fakeServiceInfo1 = this.fakeServiceInfo1;
309 var fakeServiceInfo2 = this.fakeServiceInfo2; 324 var fakeServiceInfo2 = this.fakeServiceInfo2;
325 var fakeCharacteristicInfo1 = this.fakeCharacteristicInfo1;
310 326
311 // Before tests are run, make sure setup completes. 327 // Before tests are run, make sure setup completes.
312 var setupPromise = this.setupResolver.promise.then(function() { 328 var setupPromise = this.setupResolver.promise.then(function() {
313 adapterFactory = this.adapterFactory; 329 adapterFactory = this.adapterFactory;
314 }.bind(this)); 330 }.bind(this));
315 331
316 suite('BluetoothInternalsUITest', function() { 332 suite('BluetoothInternalsUITest', function() {
317 var EXPECTED_DEVICES = 2; 333 var EXPECTED_DEVICES = 2;
318 334
319 suiteSetup(function() { 335 suiteSetup(function() {
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 811
796 // Second link is 'Forget'. 812 // Second link is 'Forget'.
797 deviceLinks[1].click(); 813 deviceLinks[1].click();
798 expectEquals('#devices', window.location.hash); 814 expectEquals('#devices', window.location.hash);
799 detailsPage = $(deviceDetailsPageId); 815 detailsPage = $(deviceDetailsPageId);
800 expectFalse(!!detailsPage); 816 expectFalse(!!detailsPage);
801 }); 817 });
802 }); 818 });
803 }); 819 });
804 820
821 suite('BluetoothInternalsUnitTests', function() {
822 var ValueDataType = value_control.ValueDataType;
823
824 /* Value Control Unit Tests */
825 var aCode = 'a'.charCodeAt(0);
826 var bCode = 'b'.charCodeAt(0);
827 var cCode = 'c'.charCodeAt(0);
828
829 var device1 = fakeDeviceInfo1();
830 var service1 = fakeServiceInfo1();
831 var characteristic1 = fakeCharacteristicInfo1();
832 var valueControl = null;
833
834 setup(function() {
835 valueControl = value_control.ValueControl();
836 valueControl.load(device1.address, service1.id, characteristic1);
837 valueControl.typeSelect_.value = ValueDataType.HEXADECIMAL;
838 });
839
840 test('ValueControl_SetValue_Hexadecimal_EmptyArray', function() {
841 valueControl.setValue([]);
842 expectEquals('', valueControl.valueInput_.value);
843 });
844
845 test('ValueControl_SetValue_Hexadecimal_OneValue', function() {
846 valueControl.setValue([aCode]);
847 expectEquals('0x61', valueControl.valueInput_.value);
848 });
849
850 test('ValueControl_SetValue_Hexadecimal_ThreeValues', function() {
851 valueControl.setValue([aCode, bCode, cCode]);
852 expectEquals('0x616263', valueControl.valueInput_.value);
853 });
854
855 test('ValueControl_SetValue_UTF8_EmptyArray', function() {
856 valueControl.typeSelect_.value = ValueDataType.UTF8
857 valueControl.setValue([]);
858 expectEquals('', valueControl.valueInput_.value);
859 });
860
861 test('ValueControl_SetValue_UTF8_OneValue', function() {
862 valueControl.typeSelect_.value = ValueDataType.UTF8
863 valueControl.setValue([aCode]);
864 expectEquals('a', valueControl.valueInput_.value);
865 });
866
867 test('ValueControl_SetValue_UTF8_ThreeValues', function() {
868 valueControl.typeSelect_.value = ValueDataType.UTF8
869 valueControl.setValue([aCode, bCode, cCode]);
870 expectEquals('abc', valueControl.valueInput_.value);
871 });
872
873 test('ValueControl_SetValue_Decimal_EmptyArray', function() {
874 valueControl.typeSelect_.value = ValueDataType.DECIMAL
875 valueControl.setValue([]);
876 expectEquals('', valueControl.valueInput_.value);
877 });
878
879 test('ValueControl_SetValue_Decimal_OneValue', function() {
880 valueControl.typeSelect_.value = ValueDataType.DECIMAL
881 valueControl.setValue([aCode]);
882 expectEquals(String(aCode), valueControl.valueInput_.value);
883 });
884
885 test('ValueControl_SetValue_Decimal_ThreeValues', function() {
886 valueControl.typeSelect_.value = ValueDataType.DECIMAL
887 valueControl.setValue([aCode, bCode, cCode]);
888 expectEquals('97-98-99', valueControl.valueInput_.value);
889 });
890
891 test('ValueControl_ConvertValue_Hexadecimal_EmptyString', function() {
892 valueControl.value_.setAs(ValueDataType.HEXADECIMAL, '');
893
894 var valueArr = valueControl.value_.getArray();
dpapad 2017/01/25 23:50:20 Nit (optional): No need for local var, just inline
mbrunson 2017/01/26 19:16:26 Done.
895 expectEquals(0, valueArr.length);
896 });
897
898 test('ValueControl_ConvertValue_Hexadecimal_BadHexPrefix', function() {
899 expectThrows(function() {
900 valueControl.value_.setAs(ValueDataType.HEXADECIMAL, 'd0x');
901 }, 'Expected new value to start with "0x"');
902 });
903
904 test('ValueControl_ConvertValue_Hexadecimal_ThreeValues', function() {
905 valueControl.value_.setAs(ValueDataType.HEXADECIMAL, '0x616263');
906
907 var valueArr = valueControl.value_.getArray();
908 expectDeepEquals([aCode, bCode, cCode], valueArr);
909 });
910
911 test('ValueControl_ConvertValue_UTF8_EmptyString', function() {
912 valueControl.typeSelect_.value = ValueDataType.UTF8
913 valueControl.value_.setAs(ValueDataType.UTF8, '');
914
915 var valueArr = valueControl.value_.getArray();
916 expectEquals(0, valueArr.length);
917 });
918
919 test('ValueControl_ConvertValue_UTF8_ThreeValues', function() {
920 valueControl.typeSelect_.value = ValueDataType.UTF8
921 valueControl.value_.setAs(ValueDataType.UTF8, 'abc');
922
923 var valueArr = valueControl.value_.getArray();
924 expectDeepEquals([aCode, bCode, cCode], valueArr);
925 });
926
927 test('ValueControl_ConvertValue_Decimal_EmptyString', function() {
928 valueControl.typeSelect_.value = ValueDataType.DECIMAL
929 valueControl.value_.setAs(ValueDataType.DECIMAL, '');
930 var valueArr = valueControl.value_.getArray();
931
932 expectEquals(0, valueArr.length);
933 });
934
935 test('ValueControl_ConvertValue_Decimal_ThreeValues_Fail', function() {
936 valueControl.typeSelect_.value = ValueDataType.DECIMAL
937
938 expectThrows(function() {
939 valueControl.value_.setAs(ValueDataType.DECIMAL, '97-+-99' /* a-+-c */);
940 }, 'New value can only contain numbers and hyphens');
941 });
942
943 test('ValueControl_ConvertValue_Decimal_ThreeValues', function() {
944 valueControl.typeSelect_.value = ValueDataType.DECIMAL
945 valueControl.value_.setAs(ValueDataType.DECIMAL, '97-98-99' /* abc */);
946
947 var valueArr = valueControl.value_.getArray();
948 expectDeepEquals([aCode, bCode, cCode], valueArr);
949 });
950
dpapad 2017/01/25 23:50:20 Nit (optional): Unnecessary blank line.
mbrunson 2017/01/26 19:16:26 Done.
951 });
952
805 // Run all registered tests. 953 // Run all registered tests.
806 mocha.run(); 954 mocha.run();
807 }); 955 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698