1import * as NavigationBar from 'expo-navigation-bar'; 2import { Platform } from 'react-native'; 3 4export const name = 'NavigationBar'; 5 6export async function test(t) { 7 if (Platform.OS !== 'android') return; 8 async function flipValueAsync({ getAsync, setAsync, values }) { 9 // Set initial value to adjust for any state. 10 await setAsync(values[0]); 11 12 // Get the newly set value. 13 const value = await getAsync(); 14 t.expect(value).toBeDefined(); 15 t.expect(value).toBe(values[0]); 16 17 // Toggle value again and ensure it's different. 18 const nextValue = value === values[0] ? values[1] : values[0]; 19 await setAsync(nextValue); 20 const mutated = await getAsync(); 21 t.expect(mutated).toBe(nextValue); 22 } 23 24 t.describe(`NavigationBar.setButtonStyleAsync()`, () => { 25 t.it(`flips a value`, async () => { 26 await flipValueAsync({ 27 getAsync: NavigationBar.getButtonStyleAsync, 28 setAsync: NavigationBar.setButtonStyleAsync, 29 values: ['light', 'dark'], 30 }); 31 }); 32 }); 33 34 t.describe(`NavigationBar.setPositionAsync()`, () => { 35 t.it(`flips a value`, async () => { 36 await flipValueAsync({ 37 getAsync: NavigationBar.unstable_getPositionAsync, 38 setAsync: NavigationBar.setPositionAsync, 39 values: ['absolute', 'relative'], 40 }); 41 }); 42 }); 43 44 t.describe(`NavigationBar.setVisibilityAsync()`, () => { 45 t.it(`flips a value`, async () => { 46 await flipValueAsync({ 47 getAsync: NavigationBar.getVisibilityAsync, 48 setAsync: NavigationBar.setVisibilityAsync, 49 values: ['visible', 'hidden'], 50 }); 51 }); 52 }); 53 t.describe(`NavigationBar.setBehaviorAsync()`, () => { 54 t.it(`flips a value`, async () => { 55 await flipValueAsync({ 56 getAsync: NavigationBar.getBehaviorAsync, 57 setAsync: NavigationBar.setBehaviorAsync, 58 values: ['overlay-swipe', 'inset-touch'], 59 }); 60 }); 61 }); 62 t.describe(`NavigationBar.setBorderColorAsync()`, () => { 63 t.it(`flips a value`, async () => { 64 await flipValueAsync({ 65 getAsync: NavigationBar.getBorderColorAsync, 66 setAsync: NavigationBar.setBorderColorAsync, 67 values: ['#ff0000', '#ff00ff'], 68 }); 69 }); 70 }); 71 t.describe(`NavigationBar.setBackgroundColorAsync()`, () => { 72 t.it(`flips a value`, async () => { 73 await flipValueAsync({ 74 getAsync: NavigationBar.getBackgroundColorAsync, 75 setAsync: NavigationBar.setBackgroundColorAsync, 76 values: ['#ff0000', '#ff00ff'], 77 }); 78 }); 79 }); 80} 81