• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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