hunk.code_window:     }
     }
     @Test(expected = JavaScriptEvaluateException::class)
     fun evaluate_should_throw_evaluate_exception() {
       jsiInterop.evaluateScript("'")
     }
     @Test
     fun evaluate_should_throw_evaluate_exception_with_stack() {
       val exception = Assert.assertThrows(JavaScriptEvaluateException::class.java) {
         jsiInterop.evaluateScript("function x() { global.nonExistingFunction(10); }; x();")
       }
       Truth.assertThat(exception.jsStack).isNotEmpty()
     }
     @Test
     fun evaluate_returns_undefined() {
  
hunk.labels: keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep
hunk.after_edit: //  @Test(expected = JavaScriptEvaluateException::class)
   //  fun evaluate_should_throw_evaluate_exception() {
   //    jsiInterop.evaluateScript("'")
   //  }
   //  @Test
   //  fun evaluate_should_throw_evaluate_exception_with_stack() {
   //    val exception = Assert.assertThrows(JavaScriptEvaluateException::class.java) {
   //      jsiInterop.evaluateScript("function x() { global.nonExistingFunction(10); }; x();")
   //    }
   //
   //    Truth.assertThat(exception.jsStack).isNotEmpty()
   //  }
  
hunk.file_path: packages/expo-modules-core/android/src/androidTest/java/expo/modules/kotlin/jni/JavaScriptRuntimeTest.kt
hunk.type: replace
file: import * as ImagePicker from 'expo-image-picker';
  import * as Sharing from 'expo-sharing';
  import React from 'react';
  import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
  
  export default function App() {
    const [selectedImage, setSelectedImage] = React.useState(null);
  
    const openImagePickerAsync = async () => {
      const permissionResult = await ImagePicker.requestCameraPermissionsAsync();
  
      if (permissionResult.granted === false) {
        alert('Permission to access camera roll is required!');
        return;
      }
  
      const pickerResult = await ImagePicker.launchImageLibraryAsync();
      if (pickerResult.cancelled === true) {
        return;
      }
  
      setSelectedImage({ localUri: pickerResult.uri });
    };
  
    const openShareDialogAsync = async () => {
      if (!(await Sharing.isAvailableAsync())) {
        alert(`Uh oh, sharing isn't available on your platform`);
        return;
      }
  
      await Sharing.shareAsync(selectedImage.localUri);
    };
  
    if (selectedImage !== null) {
      return (
        <View style={styles.container}>
          <Image source={{ uri: selectedImage.localUri }} style={styles.thumbnail} />
          <TouchableOpacity onPress={openShareDialogAsync} style={styles.button}>
            <Text style={styles.buttonText}>Share this photo</Text>
          </TouchableOpacity>
        </View>
      );
    }
  
    return (
      <View style={styles.container}>
        <Image source={{ uri: 'https://i.imgur.com/TkIrScD.png' }} style={styles.logo} />
        <Text style={styles.instructions}>
          To share a photo from your phone with a friend, just press the button below!
        </Text>
  
        <TouchableOpacity onPress={openImagePickerAsync} style={styles.button}>
          <Text style={styles.buttonText}>Pick a photo</Text>
        </TouchableOpacity>
      </View>
    );
  }
  
  const styles = StyleSheet.create({
    container: {
      flex: 1,
      backgroundColor: '#fff',
      alignItems: 'center',
      justifyContent: 'center',
    },
    logo: {
      width: 305,
      height: 159,
      marginBottom: 20,
    },
    instructions: {
      color: '#888',
      fontSize: 18,
      marginHorizontal: 15,
      marginBottom: 10,
    },
    button: {
      backgroundColor: 'blue',
      padding: 20,
      borderRadius: 5,
    },
    buttonText: {
      fontSize: 20,
      color: '#fff',
    },
    thumbnail: {
      width: 300,
      height: 300,
      resizeMode: 'contain',
    },
  });
  