diff options
author | Joey Grover <joeygrover@gmail.com> | 2020-09-02 12:08:17 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2020-09-02 12:08:17 -0400 |
commit | 9829fb3228e8bd8a38a67a32a3666fcc45acf066 (patch) | |
tree | 8751e9fb39d276e3428ebfe906fb65fdee055691 /android | |
parent | a4539e37619775ee028fbb4fc8b766904bdba1ed (diff) | |
download | sdl_android-9829fb3228e8bd8a38a67a32a3666fcc45acf066.tar.gz |
Fix potential NPEs in ManagerUtility class
Also added unit tests for class
Diffstat (limited to 'android')
-rw-r--r-- | android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/ManagerUtilityTests.java | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/ManagerUtilityTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/ManagerUtilityTests.java new file mode 100644 index 000000000..ac8d9eb75 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/ManagerUtilityTests.java @@ -0,0 +1,206 @@ +package com.smartdevicelink.managers; + +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import com.smartdevicelink.proxy.rpc.ImageField; +import com.smartdevicelink.proxy.rpc.TextField; +import com.smartdevicelink.proxy.rpc.WindowCapability; +import com.smartdevicelink.proxy.rpc.enums.CharacterSet; +import com.smartdevicelink.proxy.rpc.enums.FileType; +import com.smartdevicelink.proxy.rpc.enums.ImageFieldName; +import com.smartdevicelink.proxy.rpc.enums.TextFieldName; + + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertNotNull; +import static junit.framework.TestCase.assertTrue; +import static junit.framework.TestCase.assertFalse; + +/** + * This is a unit test class for the SmartDeviceLink library manager class : + * {@link ManagerUtility} + */ +@RunWith(AndroidJUnit4.class) +public class ManagerUtilityTests { + + + @Before + public void setUp() throws Exception{ + + } + + // TESTS + + @Test + public void testGetAllImageFields(){ + + List<ImageField> fields = ManagerUtility.WindowCapabilityUtility.getAllImageFields(); + assertNotNull(fields); + int size = fields.size(); + assertEquals(ImageFieldName.values().length, size); + + ImageFieldName[] names = ImageFieldName.values(); + + boolean found; + for (ImageFieldName name : names) { + found = false; + for(ImageField field : fields) { + if(field != null + && field.getName() != null + && field.getName().equals(name)) { + found = true; + break; + } + } + assertTrue(found); + } + + } + + @Test + public void testGetAllTextFields(){ + + List<TextField> fields = ManagerUtility.WindowCapabilityUtility.getAllTextFields(); + assertNotNull(fields); + int size = fields.size(); + assertEquals(TextFieldName.values().length, size); + + TextFieldName[] names = TextFieldName.values(); + + boolean found; + for (TextFieldName name : names) { + found = false; + for(TextField field : fields) { + if(field != null + && field.getName() != null + && field.getName().equals(name)) { + found = true; + break; + } + } + assertTrue(found); + } + + } + + @Test + public void testHasTextFieldOfName() { + WindowCapability capability = new WindowCapability(); + List<TextField> textFieldList = new ArrayList<>(); + textFieldList.add(new TextField(TextFieldName.mainField1, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(textFieldList); + + assertTrue(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.mainField1)); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.alertText3)); + + textFieldList.add(new TextField(TextFieldName.alertText3, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(textFieldList); + assertTrue(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.mainField1)); + assertTrue(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.alertText3)); + + textFieldList.clear(); + textFieldList.add(null); + capability.setTextFields(textFieldList); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.mainField1)); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.alertText3)); + + textFieldList.add(new TextField(TextFieldName.alertText3, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(textFieldList); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.mainField1)); + assertTrue(ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(capability, TextFieldName.alertText3)); + + } + + @Test + public void testHasImageFieldOfName() { + + WindowCapability capability = new WindowCapability(); + List<FileType> allImageFileTypes = Arrays.asList(FileType.GRAPHIC_BMP, FileType.GRAPHIC_JPEG, FileType.GRAPHIC_PNG); + + List<ImageField> imageFieldList = new ArrayList<>(); + imageFieldList.add(new ImageField(ImageFieldName.graphic, allImageFileTypes)); + capability.setImageFields(imageFieldList); + + assertTrue(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.graphic)); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.alertIcon)); + + imageFieldList.add(new ImageField(ImageFieldName.alertIcon, allImageFileTypes)); + capability.setImageFields(imageFieldList); + assertTrue(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.graphic)); + assertTrue(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.alertIcon));; + + imageFieldList.clear(); + imageFieldList.add(null); + capability.setImageFields(imageFieldList); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.graphic)); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.alertIcon)); + + imageFieldList.add(new ImageField(ImageFieldName.alertIcon, allImageFileTypes)); + capability.setImageFields(imageFieldList); + assertFalse(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.graphic)); + assertTrue(ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(capability, ImageFieldName.alertIcon)); + + } + + + @Test + public void testGetMaxNumberOfMainFieldLines() { + + WindowCapability capability = new WindowCapability(); + capability.setTextFields(ManagerUtility.WindowCapabilityUtility.getAllTextFields()); + + int maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + + assertEquals(4, maxNumerOfLines); + + //Single line + List<TextField> singleLineList = new ArrayList<>(); + singleLineList.add(new TextField(TextFieldName.mainField1, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(singleLineList); + maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + assertEquals(1, maxNumerOfLines); + + singleLineList.add(new TextField(TextFieldName.mainField2, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(singleLineList); + maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + assertEquals(2, maxNumerOfLines); + + singleLineList.add(new TextField(TextFieldName.mainField3, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(singleLineList); + maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + assertEquals(3, maxNumerOfLines); + + singleLineList.add(new TextField(TextFieldName.mainField4, CharacterSet.UTF_8, 500, 8)); + capability.setTextFields(singleLineList); + maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + assertEquals(4, maxNumerOfLines); + + List<TextField> nullList = new ArrayList<>(); + nullList.add(null); + assertNotNull(nullList); + capability.setTextFields(nullList); + assertNotNull(capability); + assertNotNull(capability.getTextFields()); //Fails + + maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + assertEquals(0, maxNumerOfLines); + + nullList.add(new TextField(TextFieldName.mainField4, CharacterSet.UTF_8, 500, 8)); + assertNotNull(nullList); + capability.setTextFields(nullList); + assertNotNull(capability); + assertNotNull(capability.getTextFields()); + maxNumerOfLines = ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(capability); + assertEquals(4, maxNumerOfLines); + + } +} |