package nodomain.freeyourgadget.gadgetbridge.util; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; import android.content.Context; import android.content.SharedPreferences; import org.junit.Test; import java.io.File; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; import nodomain.freeyourgadget.gadgetbridge.test.TestBase; public class ImportExportSharedPreferencesTest extends TestBase { @Test public void testExportImport() throws Exception { final SharedPreferences sharedPreferences = getContext().getSharedPreferences("testExportImport", Context.MODE_PRIVATE); assertEquals(0, sharedPreferences.getAll().size()); final HashSet EXPECTED_SET = new HashSet<>(Arrays.asList( "item 1", "item 2" )); sharedPreferences.edit() .putString("a_string", "Hello") .putBoolean("a_boolean", true) .putLong("a_long", 42) .putInt("an_int", 1337) .putFloat("a_float", 7f) .putStringSet("bip_display_items", EXPECTED_SET).commit(); assertEquals(6, sharedPreferences.getAll().size()); final File file = File.createTempFile("gb-ImportExportSharedPreferencesTest", "xml"); file.deleteOnExit(); ImportExportSharedPreferences.exportToFile(sharedPreferences, file); sharedPreferences.edit() .putInt("an_int", 3) .putString("this extra string", "should be gone after import") .commit(); assertEquals(7, sharedPreferences.getAll().size()); ImportExportSharedPreferences.importFromFile(sharedPreferences, file); assertEquals(6, sharedPreferences.getAll().size()); assertEquals("Hello", sharedPreferences.getString("a_string", null)); assertTrue(sharedPreferences.getBoolean("a_boolean", false)); assertEquals(42, sharedPreferences.getLong("a_long", 0)); assertEquals(1337, sharedPreferences.getInt("an_int", 0)); assertEquals(7f, sharedPreferences.getFloat("a_float", 0), 0.01); final Set actualSet = sharedPreferences.getStringSet("bip_display_items", Collections.emptySet()); assertEquals(EXPECTED_SET.size(), actualSet.size()); assertTrue(EXPECTED_SET.containsAll(actualSet)); assertTrue(actualSet.containsAll(EXPECTED_SET)); } }