1/* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16const testEnvironment = tsuite("Environment", () => { 17 var mockEnv = new MockEnvironmentBackend(); 18 var envProps : { key: string, defaultValue: boolean | number | string }[] = [ 19 { key: "accessibilityEnabled", defaultValue: (mockEnv.getAccessibilityEnabled() == "true") }, // backend returns string, spec has boolean for frontend 20 { key: "colorMode", defaultValue: mockEnv.getColorMode() }, 21 { key: "fontScale", defaultValue: mockEnv.getFontScale() }, 22 { key: "fontWeightScale", defaultValue: mockEnv.getFontWeightScale() }, 23 { key: "layoutDirection", defaultValue: mockEnv.getLayoutDirection() }, 24 { key: "languageCode", defaultValue: mockEnv.getLanguageCode() } 25 ]; 26 27 tcase("Initialization", () => { 28 Environment.ConfigureBackend(mockEnv); 29 test("Environment initialized", true); 30 }); 31 32 tcase("Injecting values", () => { 33 Environment.EnvProps(envProps); 34 }); 35 36 tcase("Get all value keys", () => { 37 const keys = Environment.Keys(); 38 console.debug("Environment variables:"); 39 for (let i in keys) { 40 console.debug(`${keys[i]} - strigified value: ${JSON.stringify(AppStorage.Get(keys[i]))}`); 41 } 42 43 test("Environment number of keys returned corresponds with number of values registered", keys.length == envProps.length); 44 }); 45 46 tcase("Value retrieval", () => { 47 // the native backend treats bool as string 48 test("Environment value 'accessibilityEnabled' correct", AppStorage.Get<string>("accessibilityEnabled") == "false"); 49 test("Environment value 'languageCode' correct", AppStorage.Get<string>("languageCode") == "cn"); 50 }); 51 52 tcase("Value changes from backend", () => { 53 mockEnv.simulateChange("accessibilityEnabled", true); 54 mockEnv.simulateChange("languageCode", "en"); 55 test("Environment value 'languageCode' after backend change", AppStorage.Get<string>("languageCode") == "en"); 56 test("Environment value 'accessibilityEnabled' after backend change", AppStorage.Get<boolean>("accessibilityEnabled") === true); 57 test("Environment value change simulation ", true); 58 }); 59 60 61 tcase("Teardown", () => { 62 Environment.AboutToBeDeleted(); 63 test("Environment instance destroyed", true); 64 }); 65}); 66