From c84393db52ea0e3eb01ce5d38c7f7963ecea9c02 Mon Sep 17 00:00:00 2001 From: Josh Ziegler Date: Wed, 12 Aug 2020 19:15:28 -0400 Subject: [PATCH] fix: Null check for destroying Android ASR --- .../spokestack/android/AndroidSpeechRecognizer.java | 6 ++++-- .../android/AndroidSpeechRecognizerTest.java | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/spokestack/spokestack/android/AndroidSpeechRecognizer.java b/src/main/java/io/spokestack/spokestack/android/AndroidSpeechRecognizer.java index 383d832..a3062ef 100644 --- a/src/main/java/io/spokestack/spokestack/android/AndroidSpeechRecognizer.java +++ b/src/main/java/io/spokestack/spokestack/android/AndroidSpeechRecognizer.java @@ -165,8 +165,10 @@ public void reset() { @Override public void close() { this.taskHandler.run(() -> { - this.speechRecognizer.destroy(); - this.speechRecognizer = null; + if (this.speechRecognizer != null) { + this.speechRecognizer.destroy(); + this.speechRecognizer = null; + } }); } diff --git a/src/test/java/io/spokestack/spokestack/android/AndroidSpeechRecognizerTest.java b/src/test/java/io/spokestack/spokestack/android/AndroidSpeechRecognizerTest.java index f32e2c8..13036b0 100644 --- a/src/test/java/io/spokestack/spokestack/android/AndroidSpeechRecognizerTest.java +++ b/src/test/java/io/spokestack/spokestack/android/AndroidSpeechRecognizerTest.java @@ -74,6 +74,19 @@ private void configureRecognizer(SpeechRecognizer target, ).when(target).setRecognitionListener(any()); } + @Test + public void testClose() { + SpeechConfig config = new SpeechConfig(); + config.put("trace-level", EventTracer.Level.DEBUG.value()); + config.put("min-active", 500); + AndroidSpeechRecognizer speechRecognizer = + spy(new AndroidSpeechRecognizer(config, new TaskHandler(false))); + doReturn(null).when(speechRecognizer).createRecognitionIntent(); + + // closing before establishing a recognizer is safe + assertDoesNotThrow(speechRecognizer::close); + } + @Test public void testProcess() { SpeechConfig config = new SpeechConfig();