From cf31f8f3be1780158265ec34012e8d3aed01d5cf Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 11:04:07 -0400 Subject: [PATCH 01/12] Flip incorrect test argument orders --- .../LegacySharedPreferencesTest.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java b/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java index c9e1c834436..036141a9589 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java @@ -72,27 +72,27 @@ public void before() { @Test public void getAll() { - assertEquals(plugin.getAll("", null).size(), 0); + assertEquals(0, plugin.getAll("", null).size()); addData(); Map flutterData = plugin.getAll("flutter.", null); - assertEquals(flutterData.size(), 5); - assertEquals(flutterData.get("flutter.Language"), "Java"); - assertEquals(flutterData.get("flutter.Counter"), 0L); - assertEquals(flutterData.get("flutter.Pie"), 3.14); + assertEquals(5, flutterData.size()); + assertEquals("Java", flutterData.get("flutter.Language")); + assertEquals(0L, flutterData.get("flutter.Counter")); + assertEquals(3.14, flutterData.get("flutter.Pie")); assertEquals(flutterData.get("flutter.Names"), Arrays.asList("Flutter", "Dart").toString()); - assertEquals(flutterData.get("flutter.NewToFlutter"), false); + assertEquals(false, flutterData.get("flutter.NewToFlutter")); Map allData = plugin.getAll("", null); - assertEquals(allData, data); + assertEquals(data, allData); } @Test public void allowList() { - assertEquals(plugin.getAll("", null).size(), 0); + assertEquals(0, plugin.getAll("", null).size()); addData(); @@ -100,19 +100,19 @@ public void allowList() { Map allData = plugin.getAll("flutter.", allowList); - assertEquals(allData.size(), 1); - assertEquals(allData.get("flutter.Language"), "Java"); + assertEquals(1, allData.size()); + assertEquals("Java", allData.get("flutter.Language")); assertNull(allData.get("flutter.Counter")); allData = plugin.getAll("", allowList); - assertEquals(allData.size(), 1); - assertEquals(allData.get("flutter.Language"), "Java"); + assertEquals(1, allData.size()); + assertEquals("Java", allData.get("flutter.Language")); assertNull(allData.get("flutter.Counter")); allData = plugin.getAll("prefix.", allowList); - assertEquals(allData.size(), 0); + assertEquals(0, allData.size()); assertNull(allData.get("flutter.Language")); } @@ -122,7 +122,7 @@ public void setString() { final String value = "Java"; plugin.setString(key, value); Map flutterData = plugin.getAll("", null); - assertEquals(flutterData.get(key), value); + assertEquals(value, flutterData.get(key)); } @Test @@ -131,7 +131,7 @@ public void setInt() { final long value = 0L; plugin.setInt(key, value); Map flutterData = plugin.getAll("", null); - assertEquals(flutterData.get(key), value); + assertEquals(value, flutterData.get(key)); } @Test @@ -140,7 +140,7 @@ public void setDouble() { final double value = 3.14; plugin.setDouble(key, value); Map flutterData = plugin.getAll("", null); - assertEquals(flutterData.get(key), value); + assertEquals(value, flutterData.get(key)); } @Test @@ -158,40 +158,40 @@ public void setBool() { final boolean value = false; plugin.setBool(key, value); Map flutterData = plugin.getAll("", null); - assertEquals(flutterData.get(key), value); + assertEquals(value, flutterData.get(key)); } @Test public void clearWithNoAllowList() { addData(); - assertEquals(plugin.getAll("", null).size(), 15); + assertEquals(15, plugin.getAll("", null).size()); plugin.clear("flutter.", null); - assertEquals(plugin.getAll("", null).size(), 10); + assertEquals(10, plugin.getAll("", null).size()); } @Test public void clearWithAllowList() { addData(); - assertEquals(plugin.getAll("", null).size(), 15); + assertEquals(15, plugin.getAll("", null).size()); - plugin.clear("flutter.", Collections.singletonList("flutter.Language")); + plugin.clear("flutter.", Collections.<@org.jetbrains.annotations.NotNull String>singletonList("flutter.Language")); - assertEquals(plugin.getAll("", null).size(), 14); + assertEquals(14, plugin.getAll("", null).size()); } @Test public void clearAll() { addData(); - assertEquals(plugin.getAll("", null).size(), 15); + assertEquals(15, plugin.getAll("", null).size()); plugin.clear("", null); - assertEquals(plugin.getAll("", null).size(), 0); + assertEquals(0, plugin.getAll("", null).size()); } @Test From 4f9d652c144a637c65e4e418aba2e3f69fc374a8 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 11:05:34 -0400 Subject: [PATCH 02/12] AS auto-conversion --- .../LegacySharedPreferencesTest.java | 369 ----------------- .../LegacySharedPreferencesTest.kt | 373 ++++++++++++++++++ 2 files changed, 373 insertions(+), 369 deletions(-) delete mode 100644 packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java create mode 100644 packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java b/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java deleted file mode 100644 index 036141a9589..00000000000 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/java/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.java +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright 2013 The Flutter Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package io.flutter.plugins.sharedpreferences; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.anyInt; -import static org.mockito.Mockito.anyString; - -import android.content.Context; -import android.content.SharedPreferences; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import io.flutter.embedding.engine.plugins.FlutterPlugin; -import io.flutter.plugin.common.BinaryMessenger; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.Mockito; - -public class LegacySharedPreferencesTest { - - LegacySharedPreferencesPlugin plugin; - - @Mock BinaryMessenger mockMessenger; - @Mock FlutterPlugin.FlutterPluginBinding flutterPluginBinding; - - @Before - public void before() { - Context context = Mockito.mock(Context.class); - SharedPreferences sharedPrefs = new FakeSharedPreferences(); - - mockMessenger = Mockito.mock(BinaryMessenger.class); - flutterPluginBinding = Mockito.mock(FlutterPlugin.FlutterPluginBinding.class); - - Mockito.when(flutterPluginBinding.getBinaryMessenger()).thenReturn(mockMessenger); - Mockito.when(flutterPluginBinding.getApplicationContext()).thenReturn(context); - Mockito.when(context.getSharedPreferences(anyString(), anyInt())).thenReturn(sharedPrefs); - - plugin = new LegacySharedPreferencesPlugin(new ListEncoder()); - plugin.onAttachedToEngine(flutterPluginBinding); - } - - private static final Map data = new HashMap<>(); - - static { - data.put("Language", "Java"); - data.put("Counter", 0L); - data.put("Pie", 3.14); - data.put("Names", Arrays.asList("Flutter", "Dart").toString()); - data.put("NewToFlutter", false); - data.put("flutter.Language", "Java"); - data.put("flutter.Counter", 0L); - data.put("flutter.Pie", 3.14); - data.put("flutter.Names", Arrays.asList("Flutter", "Dart").toString()); - data.put("flutter.NewToFlutter", false); - data.put("prefix.Language", "Java"); - data.put("prefix.Counter", 0L); - data.put("prefix.Pie", 3.14); - data.put("prefix.Names", Arrays.asList("Flutter", "Dart").toString()); - data.put("prefix.NewToFlutter", false); - } - - @Test - public void getAll() { - assertEquals(0, plugin.getAll("", null).size()); - - addData(); - - Map flutterData = plugin.getAll("flutter.", null); - - assertEquals(5, flutterData.size()); - assertEquals("Java", flutterData.get("flutter.Language")); - assertEquals(0L, flutterData.get("flutter.Counter")); - assertEquals(3.14, flutterData.get("flutter.Pie")); - assertEquals(flutterData.get("flutter.Names"), Arrays.asList("Flutter", "Dart").toString()); - assertEquals(false, flutterData.get("flutter.NewToFlutter")); - - Map allData = plugin.getAll("", null); - - assertEquals(data, allData); - } - - @Test - public void allowList() { - assertEquals(0, plugin.getAll("", null).size()); - - addData(); - - final List allowList = Collections.singletonList("flutter.Language"); - - Map allData = plugin.getAll("flutter.", allowList); - - assertEquals(1, allData.size()); - assertEquals("Java", allData.get("flutter.Language")); - assertNull(allData.get("flutter.Counter")); - - allData = plugin.getAll("", allowList); - - assertEquals(1, allData.size()); - assertEquals("Java", allData.get("flutter.Language")); - assertNull(allData.get("flutter.Counter")); - - allData = plugin.getAll("prefix.", allowList); - - assertEquals(0, allData.size()); - assertNull(allData.get("flutter.Language")); - } - - @Test - public void setString() { - final String key = "language"; - final String value = "Java"; - plugin.setString(key, value); - Map flutterData = plugin.getAll("", null); - assertEquals(value, flutterData.get(key)); - } - - @Test - public void setInt() { - final String key = "Counter"; - final long value = 0L; - plugin.setInt(key, value); - Map flutterData = plugin.getAll("", null); - assertEquals(value, flutterData.get(key)); - } - - @Test - public void setDouble() { - final String key = "Pie"; - final double value = 3.14; - plugin.setDouble(key, value); - Map flutterData = plugin.getAll("", null); - assertEquals(value, flutterData.get(key)); - } - - @Test - public void setEncodedStringListSetsAndGetsString() { - final String key = "Names"; - final String value = Arrays.asList("Flutter", "Dart").toString(); - plugin.setEncodedStringList(key, value); - Map flutterData = plugin.getAll("", null); - assertEquals(flutterData.get(key), value); - } - - @Test - public void setBool() { - final String key = "NewToFlutter"; - final boolean value = false; - plugin.setBool(key, value); - Map flutterData = plugin.getAll("", null); - assertEquals(value, flutterData.get(key)); - } - - @Test - public void clearWithNoAllowList() { - addData(); - - assertEquals(15, plugin.getAll("", null).size()); - - plugin.clear("flutter.", null); - - assertEquals(10, plugin.getAll("", null).size()); - } - - @Test - public void clearWithAllowList() { - addData(); - - assertEquals(15, plugin.getAll("", null).size()); - - plugin.clear("flutter.", Collections.<@org.jetbrains.annotations.NotNull String>singletonList("flutter.Language")); - - assertEquals(14, plugin.getAll("", null).size()); - } - - @Test - public void clearAll() { - addData(); - - assertEquals(15, plugin.getAll("", null).size()); - - plugin.clear("", null); - - assertEquals(0, plugin.getAll("", null).size()); - } - - @Test - public void testRemove() { - final String key = "NewToFlutter"; - final boolean value = true; - plugin.setBool(key, value); - assert (plugin.getAll("", null).containsKey(key)); - plugin.remove(key); - assertFalse(plugin.getAll("", null).containsKey(key)); - } - - private void addData() { - plugin.setString("Language", "Java"); - plugin.setInt("Counter", 0L); - plugin.setDouble("Pie", 3.14); - plugin.setEncodedStringList("Names", Arrays.asList("Flutter", "Dart").toString()); - plugin.setBool("NewToFlutter", false); - plugin.setString("flutter.Language", "Java"); - plugin.setInt("flutter.Counter", 0L); - plugin.setDouble("flutter.Pie", 3.14); - plugin.setEncodedStringList("flutter.Names", Arrays.asList("Flutter", "Dart").toString()); - plugin.setBool("flutter.NewToFlutter", false); - plugin.setString("prefix.Language", "Java"); - plugin.setInt("prefix.Counter", 0L); - plugin.setDouble("prefix.Pie", 3.14); - plugin.setEncodedStringList("prefix.Names", Arrays.asList("Flutter", "Dart").toString()); - plugin.setBool("prefix.NewToFlutter", false); - } - - /** A dummy implementation for tests for use with FakeSharedPreferences */ - public static class FakeSharedPreferencesEditor implements SharedPreferences.Editor { - private final Map sharedPrefData; - - FakeSharedPreferencesEditor(@NonNull Map data) { - sharedPrefData = data; - } - - @Override - public @NonNull SharedPreferences.Editor putString( - @NonNull String key, @Nullable String value) { - sharedPrefData.put(key, value); - return this; - } - - @Override - public @NonNull SharedPreferences.Editor putStringSet( - @NonNull String key, @Nullable Set values) { - sharedPrefData.put(key, values); - return this; - } - - @Override - public @NonNull SharedPreferences.Editor putBoolean(@NonNull String key, boolean value) { - sharedPrefData.put(key, value); - return this; - } - - @Override - public @NonNull SharedPreferences.Editor putInt(@NonNull String key, int value) { - sharedPrefData.put(key, value); - return this; - } - - @Override - public @NonNull SharedPreferences.Editor putLong(@NonNull String key, long value) { - sharedPrefData.put(key, value); - return this; - } - - @Override - public @NonNull SharedPreferences.Editor putFloat(@NonNull String key, float value) { - sharedPrefData.put(key, value); - return this; - } - - @Override - public @NonNull SharedPreferences.Editor remove(@NonNull String key) { - sharedPrefData.remove(key); - return this; - } - - @Override - public boolean commit() { - return true; - } - - @Override - public void apply() { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public @NonNull SharedPreferences.Editor clear() { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - } - - /** A dummy implementation of SharedPreferences for tests that store values in memory. */ - private static class FakeSharedPreferences implements SharedPreferences { - - Map sharedPrefData = new HashMap<>(); - - @Override - public @NonNull Map getAll() { - return sharedPrefData; - } - - @Override - public @NonNull SharedPreferences.Editor edit() { - return new FakeSharedPreferencesEditor(sharedPrefData); - } - - // All methods below are not implemented. - @Override - public boolean contains(@NonNull String key) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public boolean getBoolean(@NonNull String key, boolean defValue) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public float getFloat(@NonNull String key, float defValue) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public int getInt(@NonNull String key, int defValue) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public long getLong(@NonNull String key, long defValue) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public @NonNull String getString(@NonNull String key, @Nullable String defValue) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public @NonNull Set getStringSet(@NonNull String key, @Nullable Set defValues) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public void registerOnSharedPreferenceChangeListener( - @NonNull SharedPreferences.OnSharedPreferenceChangeListener listener) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - - @Override - public void unregisterOnSharedPreferenceChangeListener( - @NonNull SharedPreferences.OnSharedPreferenceChangeListener listener) { - throw new UnsupportedOperationException("This method is not implemented for testing"); - } - } - - /** A dummy implementation of SharedPreferencesListEncoder for tests that store List. */ - static class ListEncoder implements SharedPreferencesListEncoder { - @Override - public @NonNull String encode(@NonNull List list) { - return String.join(";-;", list); - } - - @Override - public @NonNull List decode(@NonNull String listString) { - return Arrays.asList(listString.split(";-;")); - } - } -} diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt new file mode 100644 index 00000000000..005099cabf8 --- /dev/null +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -0,0 +1,373 @@ +// Copyright 2013 The Flutter Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +package io.flutter.plugins.sharedpreferences + +import android.content.Context +import android.content.SharedPreferences +import android.content.SharedPreferences.OnSharedPreferenceChangeListener +import io.flutter.embedding.engine.plugins.FlutterPlugin.FlutterPluginBinding +import io.flutter.plugin.common.BinaryMessenger +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import org.mockito.ArgumentMatchers +import org.mockito.Mock +import org.mockito.Mockito +import java.lang.String +import java.util.Arrays +import kotlin.Any +import kotlin.Boolean +import kotlin.Float +import kotlin.Int +import kotlin.Long +import kotlin.UnsupportedOperationException +import kotlin.assert +import kotlin.collections.HashMap +import kotlin.collections.MutableList +import kotlin.collections.MutableMap +import kotlin.collections.MutableSet +import kotlin.collections.dropLastWhile +import kotlin.collections.get +import kotlin.collections.mutableListOf +import kotlin.collections.toTypedArray + +class LegacySharedPreferencesTest { + var plugin: LegacySharedPreferencesPlugin? = null + + @Mock + var mockMessenger: BinaryMessenger? = null + + @Mock + var flutterPluginBinding: FlutterPluginBinding? = null + + @Before + fun before() { + val context = Mockito.mock(Context::class.java) + val sharedPrefs: SharedPreferences = FakeSharedPreferences() + + mockMessenger = Mockito.mock(BinaryMessenger::class.java) + flutterPluginBinding = Mockito.mock(FlutterPluginBinding::class.java) + + Mockito.`when`(flutterPluginBinding!!.getBinaryMessenger()) + .thenReturn(mockMessenger) + Mockito.`when`(flutterPluginBinding!!.getApplicationContext()).thenReturn(context) + Mockito.`when`( + context.getSharedPreferences( + ArgumentMatchers.anyString(), + ArgumentMatchers.anyInt() + ) + ).thenReturn(sharedPrefs) + + plugin = LegacySharedPreferencesPlugin(ListEncoder()) + plugin!!.onAttachedToEngine(flutterPluginBinding!!) + } + + @Test + fun getAll() { + Assert.assertEquals(0, plugin!!.getAll("", null).size.toLong()) + + addData() + + val flutterData: MutableMap = plugin!!.getAll("flutter.", null) + + Assert.assertEquals(5, flutterData.size.toLong()) + Assert.assertEquals("Java", flutterData.get("flutter.Language")) + Assert.assertEquals(0L, flutterData.get("flutter.Counter")) + Assert.assertEquals(3.14, flutterData.get("flutter.Pie")) + Assert.assertEquals( + flutterData.get("flutter.Names"), + mutableListOf("Flutter", "Dart").toString() + ) + Assert.assertEquals(false, flutterData.get("flutter.NewToFlutter")) + + val allData: MutableMap = plugin!!.getAll("", null) + + Assert.assertEquals(data, allData) + } + + @Test + fun allowList() { + Assert.assertEquals(0, plugin!!.getAll("", null).size.toLong()) + + addData() + + val allowList = mutableListOf("flutter.Language") + + var allData: MutableMap = plugin!!.getAll("flutter.", allowList) + + Assert.assertEquals(1, allData.size.toLong()) + Assert.assertEquals("Java", allData.get("flutter.Language")) + Assert.assertNull(allData.get("flutter.Counter")) + + allData = plugin!!.getAll("", allowList) + + Assert.assertEquals(1, allData.size.toLong()) + Assert.assertEquals("Java", allData.get("flutter.Language")) + Assert.assertNull(allData.get("flutter.Counter")) + + allData = plugin!!.getAll("prefix.", allowList) + + Assert.assertEquals(0, allData.size.toLong()) + Assert.assertNull(allData.get("flutter.Language")) + } + + @Test + fun setString() { + val key = "language" + val value = "Java" + plugin!!.setString(key, value) + val flutterData: MutableMap = plugin!!.getAll("", null) + Assert.assertEquals(value, flutterData.get(key)) + } + + @Test + fun setInt() { + val key = "Counter" + val value = 0L + plugin!!.setInt(key, value) + val flutterData: MutableMap = plugin!!.getAll("", null) + Assert.assertEquals(value, flutterData.get(key)) + } + + @Test + fun setDouble() { + val key = "Pie" + val value = 3.14 + plugin!!.setDouble(key, value) + val flutterData: MutableMap = plugin!!.getAll("", null) + Assert.assertEquals(value, flutterData.get(key)) + } + + @Test + fun setEncodedStringListSetsAndGetsString() { + val key = "Names" + val value = mutableListOf("Flutter", "Dart").toString() + plugin!!.setEncodedStringList(key, value) + val flutterData: MutableMap = plugin!!.getAll("", null) + Assert.assertEquals(flutterData.get(key), value) + } + + @Test + fun setBool() { + val key = "NewToFlutter" + val value = false + plugin!!.setBool(key, value) + val flutterData: MutableMap = plugin!!.getAll("", null) + Assert.assertEquals(value, flutterData.get(key)) + } + + @Test + fun clearWithNoAllowList() { + addData() + + Assert.assertEquals(15, plugin!!.getAll("", null).size.toLong()) + + plugin!!.clear("flutter.", null) + + Assert.assertEquals(10, plugin!!.getAll("", null).size.toLong()) + } + + @Test + fun clearWithAllowList() { + addData() + + Assert.assertEquals(15, plugin!!.getAll("", null).size.toLong()) + + plugin!!.clear("flutter.", mutableListOf("flutter.Language")) + + Assert.assertEquals(14, plugin!!.getAll("", null).size.toLong()) + } + + @Test + fun clearAll() { + addData() + + Assert.assertEquals(15, plugin!!.getAll("", null).size.toLong()) + + plugin!!.clear("", null) + + Assert.assertEquals(0, plugin!!.getAll("", null).size.toLong()) + } + + @Test + fun testRemove() { + val key = "NewToFlutter" + val value = true + plugin!!.setBool(key, value) + assert(plugin!!.getAll("", null).containsKey(key)) + plugin!!.remove(key) + Assert.assertFalse(plugin!!.getAll("", null).containsKey(key)) + } + + private fun addData() { + plugin!!.setString("Language", "Java") + plugin!!.setInt("Counter", 0L) + plugin!!.setDouble("Pie", 3.14) + plugin!!.setEncodedStringList("Names", mutableListOf("Flutter", "Dart").toString()) + plugin!!.setBool("NewToFlutter", false) + plugin!!.setString("flutter.Language", "Java") + plugin!!.setInt("flutter.Counter", 0L) + plugin!!.setDouble("flutter.Pie", 3.14) + plugin!!.setEncodedStringList( + "flutter.Names", + mutableListOf("Flutter", "Dart").toString() + ) + plugin!!.setBool("flutter.NewToFlutter", false) + plugin!!.setString("prefix.Language", "Java") + plugin!!.setInt("prefix.Counter", 0L) + plugin!!.setDouble("prefix.Pie", 3.14) + plugin!!.setEncodedStringList( + "prefix.Names", + mutableListOf("Flutter", "Dart").toString() + ) + plugin!!.setBool("prefix.NewToFlutter", false) + } + + /** A dummy implementation for tests for use with FakeSharedPreferences */ + class FakeSharedPreferencesEditor internal constructor(private val sharedPrefData: MutableMap) : + SharedPreferences.Editor { + override fun putString( + key: String, value: String? + ): SharedPreferences.Editor { + sharedPrefData.put(key, value) + return this + } + + override fun putStringSet( + key: String, values: MutableSet? + ): SharedPreferences.Editor { + sharedPrefData.put(key, values) + return this + } + + override fun putBoolean(key: String, value: Boolean): SharedPreferences.Editor { + sharedPrefData.put(key, value) + return this + } + + override fun putInt(key: String, value: Int): SharedPreferences.Editor { + sharedPrefData.put(key, value) + return this + } + + override fun putLong(key: String, value: Long): SharedPreferences.Editor { + sharedPrefData.put(key, value) + return this + } + + override fun putFloat(key: String, value: Float): SharedPreferences.Editor { + sharedPrefData.put(key, value) + return this + } + + override fun remove(key: String): SharedPreferences.Editor { + sharedPrefData.remove(key) + return this + } + + override fun commit(): Boolean { + return true + } + + override fun apply() { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun clear(): SharedPreferences.Editor { + throw UnsupportedOperationException("This method is not implemented for testing") + } + } + + /** A dummy implementation of SharedPreferences for tests that store values in memory. */ + private class FakeSharedPreferences : SharedPreferences { + var sharedPrefData: MutableMap = HashMap() + + override fun getAll(): MutableMap { + return sharedPrefData + } + + override fun edit(): SharedPreferences.Editor { + return FakeSharedPreferencesEditor(sharedPrefData) + } + + // All methods below are not implemented. + override fun contains(key: String): Boolean { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun getBoolean(key: String, defValue: Boolean): Boolean { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun getFloat(key: String, defValue: Float): Float { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun getInt(key: String, defValue: Int): Int { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun getLong(key: String, defValue: Long): Long { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun getString(key: String, defValue: String?): String { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun getStringSet( + key: String, + defValues: MutableSet? + ): MutableSet { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun registerOnSharedPreferenceChangeListener( + listener: OnSharedPreferenceChangeListener + ) { + throw UnsupportedOperationException("This method is not implemented for testing") + } + + override fun unregisterOnSharedPreferenceChangeListener( + listener: OnSharedPreferenceChangeListener + ) { + throw UnsupportedOperationException("This method is not implemented for testing") + } + } + + /** A dummy implementation of SharedPreferencesListEncoder for tests that store List. */ + internal class ListEncoder : SharedPreferencesListEncoder { + override fun encode(list: MutableList): String { + return String.join(";-;", list) + } + + override fun decode(listString: kotlin.String): MutableList { + return Arrays.asList( + *listString.split(";-;".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + ) + } + } + + companion object { + private val data: MutableMap = HashMap() + + init { + data.put("Language", "Java") + data.put("Counter", 0L) + data.put("Pie", 3.14) + data.put("Names", mutableListOf("Flutter", "Dart").toString()) + data.put("NewToFlutter", false) + data.put("flutter.Language", "Java") + data.put("flutter.Counter", 0L) + data.put("flutter.Pie", 3.14) + data.put("flutter.Names", mutableListOf("Flutter", "Dart").toString()) + data.put("flutter.NewToFlutter", false) + data.put("prefix.Language", "Java") + data.put("prefix.Counter", 0L) + data.put("prefix.Pie", 3.14) + data.put("prefix.Names", mutableListOf("Flutter", "Dart").toString()) + data.put("prefix.NewToFlutter", false) + } + } +} From 6483d5d0e8bf86e6699053c2a29553dec2714f76 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 11:06:49 -0400 Subject: [PATCH 03/12] lateinit --- .../LegacySharedPreferencesTest.kt | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index 005099cabf8..fccd110063b 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -33,13 +33,13 @@ import kotlin.collections.mutableListOf import kotlin.collections.toTypedArray class LegacySharedPreferencesTest { - var plugin: LegacySharedPreferencesPlugin? = null + lateinit var plugin: LegacySharedPreferencesPlugin @Mock - var mockMessenger: BinaryMessenger? = null + lateinit var mockMessenger: BinaryMessenger @Mock - var flutterPluginBinding: FlutterPluginBinding? = null + lateinit var flutterPluginBinding: FlutterPluginBinding @Before fun before() { @@ -49,9 +49,9 @@ class LegacySharedPreferencesTest { mockMessenger = Mockito.mock(BinaryMessenger::class.java) flutterPluginBinding = Mockito.mock(FlutterPluginBinding::class.java) - Mockito.`when`(flutterPluginBinding!!.getBinaryMessenger()) + Mockito.`when`(flutterPluginBinding.getBinaryMessenger()) .thenReturn(mockMessenger) - Mockito.`when`(flutterPluginBinding!!.getApplicationContext()).thenReturn(context) + Mockito.`when`(flutterPluginBinding.getApplicationContext()).thenReturn(context) Mockito.`when`( context.getSharedPreferences( ArgumentMatchers.anyString(), @@ -60,16 +60,16 @@ class LegacySharedPreferencesTest { ).thenReturn(sharedPrefs) plugin = LegacySharedPreferencesPlugin(ListEncoder()) - plugin!!.onAttachedToEngine(flutterPluginBinding!!) + plugin.onAttachedToEngine(flutterPluginBinding) } @Test fun getAll() { - Assert.assertEquals(0, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) addData() - val flutterData: MutableMap = plugin!!.getAll("flutter.", null) + val flutterData: MutableMap = plugin.getAll("flutter.", null) Assert.assertEquals(5, flutterData.size.toLong()) Assert.assertEquals("Java", flutterData.get("flutter.Language")) @@ -81,32 +81,32 @@ class LegacySharedPreferencesTest { ) Assert.assertEquals(false, flutterData.get("flutter.NewToFlutter")) - val allData: MutableMap = plugin!!.getAll("", null) + val allData: MutableMap = plugin.getAll("", null) Assert.assertEquals(data, allData) } @Test fun allowList() { - Assert.assertEquals(0, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) addData() val allowList = mutableListOf("flutter.Language") - var allData: MutableMap = plugin!!.getAll("flutter.", allowList) + var allData: MutableMap = plugin.getAll("flutter.", allowList) Assert.assertEquals(1, allData.size.toLong()) Assert.assertEquals("Java", allData.get("flutter.Language")) Assert.assertNull(allData.get("flutter.Counter")) - allData = plugin!!.getAll("", allowList) + allData = plugin.getAll("", allowList) Assert.assertEquals(1, allData.size.toLong()) Assert.assertEquals("Java", allData.get("flutter.Language")) Assert.assertNull(allData.get("flutter.Counter")) - allData = plugin!!.getAll("prefix.", allowList) + allData = plugin.getAll("prefix.", allowList) Assert.assertEquals(0, allData.size.toLong()) Assert.assertNull(allData.get("flutter.Language")) @@ -116,8 +116,8 @@ class LegacySharedPreferencesTest { fun setString() { val key = "language" val value = "Java" - plugin!!.setString(key, value) - val flutterData: MutableMap = plugin!!.getAll("", null) + plugin.setString(key, value) + val flutterData: MutableMap = plugin.getAll("", null) Assert.assertEquals(value, flutterData.get(key)) } @@ -125,8 +125,8 @@ class LegacySharedPreferencesTest { fun setInt() { val key = "Counter" val value = 0L - plugin!!.setInt(key, value) - val flutterData: MutableMap = plugin!!.getAll("", null) + plugin.setInt(key, value) + val flutterData: MutableMap = plugin.getAll("", null) Assert.assertEquals(value, flutterData.get(key)) } @@ -134,8 +134,8 @@ class LegacySharedPreferencesTest { fun setDouble() { val key = "Pie" val value = 3.14 - plugin!!.setDouble(key, value) - val flutterData: MutableMap = plugin!!.getAll("", null) + plugin.setDouble(key, value) + val flutterData: MutableMap = plugin.getAll("", null) Assert.assertEquals(value, flutterData.get(key)) } @@ -143,8 +143,8 @@ class LegacySharedPreferencesTest { fun setEncodedStringListSetsAndGetsString() { val key = "Names" val value = mutableListOf("Flutter", "Dart").toString() - plugin!!.setEncodedStringList(key, value) - val flutterData: MutableMap = plugin!!.getAll("", null) + plugin.setEncodedStringList(key, value) + val flutterData: MutableMap = plugin.getAll("", null) Assert.assertEquals(flutterData.get(key), value) } @@ -152,8 +152,8 @@ class LegacySharedPreferencesTest { fun setBool() { val key = "NewToFlutter" val value = false - plugin!!.setBool(key, value) - val flutterData: MutableMap = plugin!!.getAll("", null) + plugin.setBool(key, value) + val flutterData: MutableMap = plugin.getAll("", null) Assert.assertEquals(value, flutterData.get(key)) } @@ -161,67 +161,67 @@ class LegacySharedPreferencesTest { fun clearWithNoAllowList() { addData() - Assert.assertEquals(15, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) - plugin!!.clear("flutter.", null) + plugin.clear("flutter.", null) - Assert.assertEquals(10, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(10, plugin.getAll("", null).size.toLong()) } @Test fun clearWithAllowList() { addData() - Assert.assertEquals(15, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) - plugin!!.clear("flutter.", mutableListOf("flutter.Language")) + plugin.clear("flutter.", mutableListOf("flutter.Language")) - Assert.assertEquals(14, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(14, plugin.getAll("", null).size.toLong()) } @Test fun clearAll() { addData() - Assert.assertEquals(15, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) - plugin!!.clear("", null) + plugin.clear("", null) - Assert.assertEquals(0, plugin!!.getAll("", null).size.toLong()) + Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) } @Test fun testRemove() { val key = "NewToFlutter" val value = true - plugin!!.setBool(key, value) - assert(plugin!!.getAll("", null).containsKey(key)) - plugin!!.remove(key) - Assert.assertFalse(plugin!!.getAll("", null).containsKey(key)) + plugin.setBool(key, value) + assert(plugin.getAll("", null).containsKey(key)) + plugin.remove(key) + Assert.assertFalse(plugin.getAll("", null).containsKey(key)) } private fun addData() { - plugin!!.setString("Language", "Java") - plugin!!.setInt("Counter", 0L) - plugin!!.setDouble("Pie", 3.14) - plugin!!.setEncodedStringList("Names", mutableListOf("Flutter", "Dart").toString()) - plugin!!.setBool("NewToFlutter", false) - plugin!!.setString("flutter.Language", "Java") - plugin!!.setInt("flutter.Counter", 0L) - plugin!!.setDouble("flutter.Pie", 3.14) - plugin!!.setEncodedStringList( + plugin.setString("Language", "Java") + plugin.setInt("Counter", 0L) + plugin.setDouble("Pie", 3.14) + plugin.setEncodedStringList("Names", mutableListOf("Flutter", "Dart").toString()) + plugin.setBool("NewToFlutter", false) + plugin.setString("flutter.Language", "Java") + plugin.setInt("flutter.Counter", 0L) + plugin.setDouble("flutter.Pie", 3.14) + plugin.setEncodedStringList( "flutter.Names", mutableListOf("Flutter", "Dart").toString() ) - plugin!!.setBool("flutter.NewToFlutter", false) - plugin!!.setString("prefix.Language", "Java") - plugin!!.setInt("prefix.Counter", 0L) - plugin!!.setDouble("prefix.Pie", 3.14) - plugin!!.setEncodedStringList( + plugin.setBool("flutter.NewToFlutter", false) + plugin.setString("prefix.Language", "Java") + plugin.setInt("prefix.Counter", 0L) + plugin.setDouble("prefix.Pie", 3.14) + plugin.setEncodedStringList( "prefix.Names", mutableListOf("Flutter", "Dart").toString() ) - plugin!!.setBool("prefix.NewToFlutter", false) + plugin.setBool("prefix.NewToFlutter", false) } /** A dummy implementation for tests for use with FakeSharedPreferences */ From 61e849bf1ea6263aa68bedd8d7671a82078a6087 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 11:25:48 -0400 Subject: [PATCH 04/12] initial manual fixup: better types, error and warning fixes --- .../LegacySharedPreferencesTest.kt | 155 ++++++++---------- 1 file changed, 68 insertions(+), 87 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index fccd110063b..925d7e160e8 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -14,23 +14,6 @@ import org.junit.Test import org.mockito.ArgumentMatchers import org.mockito.Mock import org.mockito.Mockito -import java.lang.String -import java.util.Arrays -import kotlin.Any -import kotlin.Boolean -import kotlin.Float -import kotlin.Int -import kotlin.Long -import kotlin.UnsupportedOperationException -import kotlin.assert -import kotlin.collections.HashMap -import kotlin.collections.MutableList -import kotlin.collections.MutableMap -import kotlin.collections.MutableSet -import kotlin.collections.dropLastWhile -import kotlin.collections.get -import kotlin.collections.mutableListOf -import kotlin.collections.toTypedArray class LegacySharedPreferencesTest { lateinit var plugin: LegacySharedPreferencesPlugin @@ -43,16 +26,16 @@ class LegacySharedPreferencesTest { @Before fun before() { - val context = Mockito.mock(Context::class.java) + val context = Mockito.mock(Context::class.java) val sharedPrefs: SharedPreferences = FakeSharedPreferences() - mockMessenger = Mockito.mock(BinaryMessenger::class.java) - flutterPluginBinding = Mockito.mock(FlutterPluginBinding::class.java) + mockMessenger = Mockito.mock(BinaryMessenger::class.java) + flutterPluginBinding = Mockito.mock(FlutterPluginBinding::class.java) - Mockito.`when`(flutterPluginBinding.getBinaryMessenger()) + Mockito.`when`(flutterPluginBinding.binaryMessenger) .thenReturn(mockMessenger) - Mockito.`when`(flutterPluginBinding.getApplicationContext()).thenReturn(context) - Mockito.`when`( + Mockito.`when`(flutterPluginBinding.applicationContext).thenReturn(context) + Mockito.`when`( context.getSharedPreferences( ArgumentMatchers.anyString(), ArgumentMatchers.anyInt() @@ -69,19 +52,19 @@ class LegacySharedPreferencesTest { addData() - val flutterData: MutableMap = plugin.getAll("flutter.", null) + val flutterData: Map = plugin.getAll("flutter.", null) Assert.assertEquals(5, flutterData.size.toLong()) - Assert.assertEquals("Java", flutterData.get("flutter.Language")) - Assert.assertEquals(0L, flutterData.get("flutter.Counter")) - Assert.assertEquals(3.14, flutterData.get("flutter.Pie")) + Assert.assertEquals("Java", flutterData["flutter.Language"]) + Assert.assertEquals(0L, flutterData["flutter.Counter"]) + Assert.assertEquals(3.14, flutterData["flutter.Pie"]) Assert.assertEquals( - flutterData.get("flutter.Names"), - mutableListOf("Flutter", "Dart").toString() + flutterData["flutter.Names"], + listOf("Flutter", "Dart").toString() ) - Assert.assertEquals(false, flutterData.get("flutter.NewToFlutter")) + Assert.assertEquals(false, flutterData["flutter.NewToFlutter"]) - val allData: MutableMap = plugin.getAll("", null) + val allData: Map = plugin.getAll("", null) Assert.assertEquals(data, allData) } @@ -92,24 +75,24 @@ class LegacySharedPreferencesTest { addData() - val allowList = mutableListOf("flutter.Language") + val allowList = listOf("flutter.Language") - var allData: MutableMap = plugin.getAll("flutter.", allowList) + var allData: Map = plugin.getAll("flutter.", allowList) Assert.assertEquals(1, allData.size.toLong()) - Assert.assertEquals("Java", allData.get("flutter.Language")) - Assert.assertNull(allData.get("flutter.Counter")) + Assert.assertEquals("Java", allData["flutter.Language"]) + Assert.assertNull(allData["flutter.Counter"]) allData = plugin.getAll("", allowList) Assert.assertEquals(1, allData.size.toLong()) - Assert.assertEquals("Java", allData.get("flutter.Language")) - Assert.assertNull(allData.get("flutter.Counter")) + Assert.assertEquals("Java", allData["flutter.Language"]) + Assert.assertNull(allData["flutter.Counter"]) allData = plugin.getAll("prefix.", allowList) Assert.assertEquals(0, allData.size.toLong()) - Assert.assertNull(allData.get("flutter.Language")) + Assert.assertNull(allData["flutter.Language"]) } @Test @@ -117,8 +100,8 @@ class LegacySharedPreferencesTest { val key = "language" val value = "Java" plugin.setString(key, value) - val flutterData: MutableMap = plugin.getAll("", null) - Assert.assertEquals(value, flutterData.get(key)) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) } @Test @@ -126,8 +109,8 @@ class LegacySharedPreferencesTest { val key = "Counter" val value = 0L plugin.setInt(key, value) - val flutterData: MutableMap = plugin.getAll("", null) - Assert.assertEquals(value, flutterData.get(key)) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) } @Test @@ -135,17 +118,17 @@ class LegacySharedPreferencesTest { val key = "Pie" val value = 3.14 plugin.setDouble(key, value) - val flutterData: MutableMap = plugin.getAll("", null) - Assert.assertEquals(value, flutterData.get(key)) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) } @Test fun setEncodedStringListSetsAndGetsString() { val key = "Names" - val value = mutableListOf("Flutter", "Dart").toString() + val value = listOf("Flutter", "Dart").toString() plugin.setEncodedStringList(key, value) - val flutterData: MutableMap = plugin.getAll("", null) - Assert.assertEquals(flutterData.get(key), value) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(flutterData[key], value) } @Test @@ -153,8 +136,8 @@ class LegacySharedPreferencesTest { val key = "NewToFlutter" val value = false plugin.setBool(key, value) - val flutterData: MutableMap = plugin.getAll("", null) - Assert.assertEquals(value, flutterData.get(key)) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) } @Test @@ -174,7 +157,7 @@ class LegacySharedPreferencesTest { Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) - plugin.clear("flutter.", mutableListOf("flutter.Language")) + plugin.clear("flutter.", listOf("flutter.Language")) Assert.assertEquals(14, plugin.getAll("", null).size.toLong()) } @@ -204,14 +187,14 @@ class LegacySharedPreferencesTest { plugin.setString("Language", "Java") plugin.setInt("Counter", 0L) plugin.setDouble("Pie", 3.14) - plugin.setEncodedStringList("Names", mutableListOf("Flutter", "Dart").toString()) + plugin.setEncodedStringList("Names", listOf("Flutter", "Dart").toString()) plugin.setBool("NewToFlutter", false) plugin.setString("flutter.Language", "Java") plugin.setInt("flutter.Counter", 0L) plugin.setDouble("flutter.Pie", 3.14) plugin.setEncodedStringList( "flutter.Names", - mutableListOf("Flutter", "Dart").toString() + listOf("Flutter", "Dart").toString() ) plugin.setBool("flutter.NewToFlutter", false) plugin.setString("prefix.Language", "Java") @@ -219,45 +202,45 @@ class LegacySharedPreferencesTest { plugin.setDouble("prefix.Pie", 3.14) plugin.setEncodedStringList( "prefix.Names", - mutableListOf("Flutter", "Dart").toString() + listOf("Flutter", "Dart").toString() ) plugin.setBool("prefix.NewToFlutter", false) } /** A dummy implementation for tests for use with FakeSharedPreferences */ - class FakeSharedPreferencesEditor internal constructor(private val sharedPrefData: MutableMap) : + class FakeSharedPreferencesEditor internal constructor(private val sharedPrefData: MutableMap) : SharedPreferences.Editor { override fun putString( key: String, value: String? ): SharedPreferences.Editor { - sharedPrefData.put(key, value) + sharedPrefData[key] = value return this } override fun putStringSet( - key: String, values: MutableSet? + key: String, values: Set? ): SharedPreferences.Editor { - sharedPrefData.put(key, values) + sharedPrefData[key] = values return this } override fun putBoolean(key: String, value: Boolean): SharedPreferences.Editor { - sharedPrefData.put(key, value) + sharedPrefData[key] = value return this } override fun putInt(key: String, value: Int): SharedPreferences.Editor { - sharedPrefData.put(key, value) + sharedPrefData[key] = value return this } override fun putLong(key: String, value: Long): SharedPreferences.Editor { - sharedPrefData.put(key, value) + sharedPrefData[key] = value return this } override fun putFloat(key: String, value: Float): SharedPreferences.Editor { - sharedPrefData.put(key, value) + sharedPrefData[key] = value return this } @@ -281,9 +264,9 @@ class LegacySharedPreferencesTest { /** A dummy implementation of SharedPreferences for tests that store values in memory. */ private class FakeSharedPreferences : SharedPreferences { - var sharedPrefData: MutableMap = HashMap() + var sharedPrefData: MutableMap = HashMap() - override fun getAll(): MutableMap { + override fun getAll(): Map { return sharedPrefData } @@ -318,8 +301,8 @@ class LegacySharedPreferencesTest { override fun getStringSet( key: String, - defValues: MutableSet? - ): MutableSet { + defValues: Set? + ): Set { throw UnsupportedOperationException("This method is not implemented for testing") } @@ -338,36 +321,34 @@ class LegacySharedPreferencesTest { /** A dummy implementation of SharedPreferencesListEncoder for tests that store List. */ internal class ListEncoder : SharedPreferencesListEncoder { - override fun encode(list: MutableList): String { - return String.join(";-;", list) + override fun encode(list: List): String { + return list.joinToString(separator = ";-;") } - override fun decode(listString: kotlin.String): MutableList { - return Arrays.asList( - *listString.split(";-;".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() - ) + override fun decode(listString: String): List { + return listString.split(";-;") } } companion object { - private val data: MutableMap = HashMap() + private val data: MutableMap = HashMap() init { - data.put("Language", "Java") - data.put("Counter", 0L) - data.put("Pie", 3.14) - data.put("Names", mutableListOf("Flutter", "Dart").toString()) - data.put("NewToFlutter", false) - data.put("flutter.Language", "Java") - data.put("flutter.Counter", 0L) - data.put("flutter.Pie", 3.14) - data.put("flutter.Names", mutableListOf("Flutter", "Dart").toString()) - data.put("flutter.NewToFlutter", false) - data.put("prefix.Language", "Java") - data.put("prefix.Counter", 0L) - data.put("prefix.Pie", 3.14) - data.put("prefix.Names", mutableListOf("Flutter", "Dart").toString()) - data.put("prefix.NewToFlutter", false) + data["Language"] = "Java" + data["Counter"] = 0L + data["Pie"] = 3.14 + data["Names"] = listOf("Flutter", "Dart").toString() + data["NewToFlutter"] = false + data["flutter.Language"] = "Java" + data["flutter.Counter"] = 0L + data["flutter.Pie"] = 3.14 + data["flutter.Names"] = listOf("Flutter", "Dart").toString() + data["flutter.NewToFlutter"] = false + data["prefix.Language"] = "Java" + data["prefix.Counter"] = 0L + data["prefix.Pie"] = 3.14 + data["prefix.Names"] = listOf("Flutter", "Dart").toString() + data["prefix.NewToFlutter"] = false } } } From 937d0c461331f8df4f9f8c535441b480a9ad9c97 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 11:32:40 -0400 Subject: [PATCH 05/12] Autoformat --- .../LegacySharedPreferencesTest.kt | 552 +++++++++--------- 1 file changed, 267 insertions(+), 285 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index 925d7e160e8..6aa07fb049c 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -16,339 +16,321 @@ import org.mockito.Mock import org.mockito.Mockito class LegacySharedPreferencesTest { - lateinit var plugin: LegacySharedPreferencesPlugin - - @Mock - lateinit var mockMessenger: BinaryMessenger - - @Mock - lateinit var flutterPluginBinding: FlutterPluginBinding - - @Before - fun before() { - val context = Mockito.mock(Context::class.java) - val sharedPrefs: SharedPreferences = FakeSharedPreferences() - - mockMessenger = Mockito.mock(BinaryMessenger::class.java) - flutterPluginBinding = Mockito.mock(FlutterPluginBinding::class.java) - - Mockito.`when`(flutterPluginBinding.binaryMessenger) - .thenReturn(mockMessenger) - Mockito.`when`(flutterPluginBinding.applicationContext).thenReturn(context) - Mockito.`when`( - context.getSharedPreferences( - ArgumentMatchers.anyString(), - ArgumentMatchers.anyInt() - ) - ).thenReturn(sharedPrefs) - - plugin = LegacySharedPreferencesPlugin(ListEncoder()) - plugin.onAttachedToEngine(flutterPluginBinding) - } - - @Test - fun getAll() { - Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + lateinit var plugin: LegacySharedPreferencesPlugin - addData() + @Mock lateinit var mockMessenger: BinaryMessenger + + @Mock lateinit var flutterPluginBinding: FlutterPluginBinding - val flutterData: Map = plugin.getAll("flutter.", null) + @Before + fun before() { + val context = Mockito.mock(Context::class.java) + val sharedPrefs: SharedPreferences = FakeSharedPreferences() + + mockMessenger = Mockito.mock(BinaryMessenger::class.java) + flutterPluginBinding = Mockito.mock(FlutterPluginBinding::class.java) + + Mockito.`when`(flutterPluginBinding.binaryMessenger).thenReturn(mockMessenger) + Mockito.`when`(flutterPluginBinding.applicationContext).thenReturn(context) + Mockito.`when`( + context.getSharedPreferences(ArgumentMatchers.anyString(), ArgumentMatchers.anyInt())) + .thenReturn(sharedPrefs) + + plugin = LegacySharedPreferencesPlugin(ListEncoder()) + plugin.onAttachedToEngine(flutterPluginBinding) + } + + @Test + fun getAll() { + Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + + addData() - Assert.assertEquals(5, flutterData.size.toLong()) - Assert.assertEquals("Java", flutterData["flutter.Language"]) - Assert.assertEquals(0L, flutterData["flutter.Counter"]) - Assert.assertEquals(3.14, flutterData["flutter.Pie"]) - Assert.assertEquals( - flutterData["flutter.Names"], - listOf("Flutter", "Dart").toString() - ) - Assert.assertEquals(false, flutterData["flutter.NewToFlutter"]) + val flutterData: Map = plugin.getAll("flutter.", null) - val allData: Map = plugin.getAll("", null) - - Assert.assertEquals(data, allData) - } + Assert.assertEquals(5, flutterData.size.toLong()) + Assert.assertEquals("Java", flutterData["flutter.Language"]) + Assert.assertEquals(0L, flutterData["flutter.Counter"]) + Assert.assertEquals(3.14, flutterData["flutter.Pie"]) + Assert.assertEquals(flutterData["flutter.Names"], listOf("Flutter", "Dart").toString()) + Assert.assertEquals(false, flutterData["flutter.NewToFlutter"]) - @Test - fun allowList() { - Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + val allData: Map = plugin.getAll("", null) - addData() + Assert.assertEquals(data, allData) + } - val allowList = listOf("flutter.Language") + @Test + fun allowList() { + Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) - var allData: Map = plugin.getAll("flutter.", allowList) + addData() - Assert.assertEquals(1, allData.size.toLong()) - Assert.assertEquals("Java", allData["flutter.Language"]) - Assert.assertNull(allData["flutter.Counter"]) + val allowList = listOf("flutter.Language") - allData = plugin.getAll("", allowList) + var allData: Map = plugin.getAll("flutter.", allowList) - Assert.assertEquals(1, allData.size.toLong()) - Assert.assertEquals("Java", allData["flutter.Language"]) - Assert.assertNull(allData["flutter.Counter"]) + Assert.assertEquals(1, allData.size.toLong()) + Assert.assertEquals("Java", allData["flutter.Language"]) + Assert.assertNull(allData["flutter.Counter"]) - allData = plugin.getAll("prefix.", allowList) + allData = plugin.getAll("", allowList) - Assert.assertEquals(0, allData.size.toLong()) - Assert.assertNull(allData["flutter.Language"]) + Assert.assertEquals(1, allData.size.toLong()) + Assert.assertEquals("Java", allData["flutter.Language"]) + Assert.assertNull(allData["flutter.Counter"]) + + allData = plugin.getAll("prefix.", allowList) + + Assert.assertEquals(0, allData.size.toLong()) + Assert.assertNull(allData["flutter.Language"]) + } + + @Test + fun setString() { + val key = "language" + val value = "Java" + plugin.setString(key, value) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) + } + + @Test + fun setInt() { + val key = "Counter" + val value = 0L + plugin.setInt(key, value) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) + } + + @Test + fun setDouble() { + val key = "Pie" + val value = 3.14 + plugin.setDouble(key, value) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) + } + + @Test + fun setEncodedStringListSetsAndGetsString() { + val key = "Names" + val value = listOf("Flutter", "Dart").toString() + plugin.setEncodedStringList(key, value) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(flutterData[key], value) + } + + @Test + fun setBool() { + val key = "NewToFlutter" + val value = false + plugin.setBool(key, value) + val flutterData: Map = plugin.getAll("", null) + Assert.assertEquals(value, flutterData[key]) + } + + @Test + fun clearWithNoAllowList() { + addData() + + Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + + plugin.clear("flutter.", null) + + Assert.assertEquals(10, plugin.getAll("", null).size.toLong()) + } + + @Test + fun clearWithAllowList() { + addData() + + Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + + plugin.clear("flutter.", listOf("flutter.Language")) + + Assert.assertEquals(14, plugin.getAll("", null).size.toLong()) + } + + @Test + fun clearAll() { + addData() + + Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + + plugin.clear("", null) + + Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + } + + @Test + fun testRemove() { + val key = "NewToFlutter" + val value = true + plugin.setBool(key, value) + assert(plugin.getAll("", null).containsKey(key)) + plugin.remove(key) + Assert.assertFalse(plugin.getAll("", null).containsKey(key)) + } + + private fun addData() { + plugin.setString("Language", "Java") + plugin.setInt("Counter", 0L) + plugin.setDouble("Pie", 3.14) + plugin.setEncodedStringList("Names", listOf("Flutter", "Dart").toString()) + plugin.setBool("NewToFlutter", false) + plugin.setString("flutter.Language", "Java") + plugin.setInt("flutter.Counter", 0L) + plugin.setDouble("flutter.Pie", 3.14) + plugin.setEncodedStringList("flutter.Names", listOf("Flutter", "Dart").toString()) + plugin.setBool("flutter.NewToFlutter", false) + plugin.setString("prefix.Language", "Java") + plugin.setInt("prefix.Counter", 0L) + plugin.setDouble("prefix.Pie", 3.14) + plugin.setEncodedStringList("prefix.Names", listOf("Flutter", "Dart").toString()) + plugin.setBool("prefix.NewToFlutter", false) + } + + /** A dummy implementation for tests for use with FakeSharedPreferences */ + class FakeSharedPreferencesEditor + internal constructor(private val sharedPrefData: MutableMap) : + SharedPreferences.Editor { + override fun putString(key: String, value: String?): SharedPreferences.Editor { + sharedPrefData[key] = value + return this } - @Test - fun setString() { - val key = "language" - val value = "Java" - plugin.setString(key, value) - val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + override fun putStringSet(key: String, values: Set?): SharedPreferences.Editor { + sharedPrefData[key] = values + return this } - @Test - fun setInt() { - val key = "Counter" - val value = 0L - plugin.setInt(key, value) - val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + override fun putBoolean(key: String, value: Boolean): SharedPreferences.Editor { + sharedPrefData[key] = value + return this } - @Test - fun setDouble() { - val key = "Pie" - val value = 3.14 - plugin.setDouble(key, value) - val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + override fun putInt(key: String, value: Int): SharedPreferences.Editor { + sharedPrefData[key] = value + return this } - @Test - fun setEncodedStringListSetsAndGetsString() { - val key = "Names" - val value = listOf("Flutter", "Dart").toString() - plugin.setEncodedStringList(key, value) - val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(flutterData[key], value) + override fun putLong(key: String, value: Long): SharedPreferences.Editor { + sharedPrefData[key] = value + return this } - @Test - fun setBool() { - val key = "NewToFlutter" - val value = false - plugin.setBool(key, value) - val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + override fun putFloat(key: String, value: Float): SharedPreferences.Editor { + sharedPrefData[key] = value + return this } - @Test - fun clearWithNoAllowList() { - addData() - - Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) - - plugin.clear("flutter.", null) + override fun remove(key: String): SharedPreferences.Editor { + sharedPrefData.remove(key) + return this + } - Assert.assertEquals(10, plugin.getAll("", null).size.toLong()) + override fun commit(): Boolean { + return true } - @Test - fun clearWithAllowList() { - addData() + override fun apply() { + throw UnsupportedOperationException("This method is not implemented for testing") + } - Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + override fun clear(): SharedPreferences.Editor { + throw UnsupportedOperationException("This method is not implemented for testing") + } + } - plugin.clear("flutter.", listOf("flutter.Language")) + /** A dummy implementation of SharedPreferences for tests that store values in memory. */ + private class FakeSharedPreferences : SharedPreferences { + var sharedPrefData: MutableMap = HashMap() - Assert.assertEquals(14, plugin.getAll("", null).size.toLong()) + override fun getAll(): Map { + return sharedPrefData } - @Test - fun clearAll() { - addData() + override fun edit(): SharedPreferences.Editor { + return FakeSharedPreferencesEditor(sharedPrefData) + } - Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + // All methods below are not implemented. + override fun contains(key: String): Boolean { + throw UnsupportedOperationException("This method is not implemented for testing") + } - plugin.clear("", null) + override fun getBoolean(key: String, defValue: Boolean): Boolean { + throw UnsupportedOperationException("This method is not implemented for testing") + } - Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + override fun getFloat(key: String, defValue: Float): Float { + throw UnsupportedOperationException("This method is not implemented for testing") } - @Test - fun testRemove() { - val key = "NewToFlutter" - val value = true - plugin.setBool(key, value) - assert(plugin.getAll("", null).containsKey(key)) - plugin.remove(key) - Assert.assertFalse(plugin.getAll("", null).containsKey(key)) + override fun getInt(key: String, defValue: Int): Int { + throw UnsupportedOperationException("This method is not implemented for testing") } - private fun addData() { - plugin.setString("Language", "Java") - plugin.setInt("Counter", 0L) - plugin.setDouble("Pie", 3.14) - plugin.setEncodedStringList("Names", listOf("Flutter", "Dart").toString()) - plugin.setBool("NewToFlutter", false) - plugin.setString("flutter.Language", "Java") - plugin.setInt("flutter.Counter", 0L) - plugin.setDouble("flutter.Pie", 3.14) - plugin.setEncodedStringList( - "flutter.Names", - listOf("Flutter", "Dart").toString() - ) - plugin.setBool("flutter.NewToFlutter", false) - plugin.setString("prefix.Language", "Java") - plugin.setInt("prefix.Counter", 0L) - plugin.setDouble("prefix.Pie", 3.14) - plugin.setEncodedStringList( - "prefix.Names", - listOf("Flutter", "Dart").toString() - ) - plugin.setBool("prefix.NewToFlutter", false) + override fun getLong(key: String, defValue: Long): Long { + throw UnsupportedOperationException("This method is not implemented for testing") } - /** A dummy implementation for tests for use with FakeSharedPreferences */ - class FakeSharedPreferencesEditor internal constructor(private val sharedPrefData: MutableMap) : - SharedPreferences.Editor { - override fun putString( - key: String, value: String? - ): SharedPreferences.Editor { - sharedPrefData[key] = value - return this - } - - override fun putStringSet( - key: String, values: Set? - ): SharedPreferences.Editor { - sharedPrefData[key] = values - return this - } - - override fun putBoolean(key: String, value: Boolean): SharedPreferences.Editor { - sharedPrefData[key] = value - return this - } - - override fun putInt(key: String, value: Int): SharedPreferences.Editor { - sharedPrefData[key] = value - return this - } - - override fun putLong(key: String, value: Long): SharedPreferences.Editor { - sharedPrefData[key] = value - return this - } - - override fun putFloat(key: String, value: Float): SharedPreferences.Editor { - sharedPrefData[key] = value - return this - } - - override fun remove(key: String): SharedPreferences.Editor { - sharedPrefData.remove(key) - return this - } - - override fun commit(): Boolean { - return true - } - - override fun apply() { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun clear(): SharedPreferences.Editor { - throw UnsupportedOperationException("This method is not implemented for testing") - } + override fun getString(key: String, defValue: String?): String { + throw UnsupportedOperationException("This method is not implemented for testing") } - /** A dummy implementation of SharedPreferences for tests that store values in memory. */ - private class FakeSharedPreferences : SharedPreferences { - var sharedPrefData: MutableMap = HashMap() - - override fun getAll(): Map { - return sharedPrefData - } - - override fun edit(): SharedPreferences.Editor { - return FakeSharedPreferencesEditor(sharedPrefData) - } - - // All methods below are not implemented. - override fun contains(key: String): Boolean { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun getBoolean(key: String, defValue: Boolean): Boolean { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun getFloat(key: String, defValue: Float): Float { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun getInt(key: String, defValue: Int): Int { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun getLong(key: String, defValue: Long): Long { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun getString(key: String, defValue: String?): String { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun getStringSet( - key: String, - defValues: Set? - ): Set { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun registerOnSharedPreferenceChangeListener( - listener: OnSharedPreferenceChangeListener - ) { - throw UnsupportedOperationException("This method is not implemented for testing") - } - - override fun unregisterOnSharedPreferenceChangeListener( - listener: OnSharedPreferenceChangeListener - ) { - throw UnsupportedOperationException("This method is not implemented for testing") - } + override fun getStringSet(key: String, defValues: Set?): Set { + throw UnsupportedOperationException("This method is not implemented for testing") } - /** A dummy implementation of SharedPreferencesListEncoder for tests that store List. */ - internal class ListEncoder : SharedPreferencesListEncoder { - override fun encode(list: List): String { - return list.joinToString(separator = ";-;") - } + override fun registerOnSharedPreferenceChangeListener( + listener: OnSharedPreferenceChangeListener + ) { + throw UnsupportedOperationException("This method is not implemented for testing") + } - override fun decode(listString: String): List { - return listString.split(";-;") - } + override fun unregisterOnSharedPreferenceChangeListener( + listener: OnSharedPreferenceChangeListener + ) { + throw UnsupportedOperationException("This method is not implemented for testing") + } + } + + /** + * A dummy implementation of SharedPreferencesListEncoder for tests that store List. + * + */ + internal class ListEncoder : SharedPreferencesListEncoder { + override fun encode(list: List): String { + return list.joinToString(separator = ";-;") } - companion object { - private val data: MutableMap = HashMap() - - init { - data["Language"] = "Java" - data["Counter"] = 0L - data["Pie"] = 3.14 - data["Names"] = listOf("Flutter", "Dart").toString() - data["NewToFlutter"] = false - data["flutter.Language"] = "Java" - data["flutter.Counter"] = 0L - data["flutter.Pie"] = 3.14 - data["flutter.Names"] = listOf("Flutter", "Dart").toString() - data["flutter.NewToFlutter"] = false - data["prefix.Language"] = "Java" - data["prefix.Counter"] = 0L - data["prefix.Pie"] = 3.14 - data["prefix.Names"] = listOf("Flutter", "Dart").toString() - data["prefix.NewToFlutter"] = false - } + override fun decode(listString: String): List { + return listString.split(";-;") + } + } + + companion object { + private val data: MutableMap = HashMap() + + init { + data["Language"] = "Java" + data["Counter"] = 0L + data["Pie"] = 3.14 + data["Names"] = listOf("Flutter", "Dart").toString() + data["NewToFlutter"] = false + data["flutter.Language"] = "Java" + data["flutter.Counter"] = 0L + data["flutter.Pie"] = 3.14 + data["flutter.Names"] = listOf("Flutter", "Dart").toString() + data["flutter.NewToFlutter"] = false + data["prefix.Language"] = "Java" + data["prefix.Counter"] = 0L + data["prefix.Pie"] = 3.14 + data["prefix.Names"] = listOf("Flutter", "Dart").toString() + data["prefix.NewToFlutter"] = false } + } } From cf614333d1817ad5ad48fc5e210fab240ca02316 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 11:38:54 -0400 Subject: [PATCH 06/12] Improve some kotlin --- .../LegacySharedPreferencesTest.kt | 119 +++++++++--------- 1 file changed, 60 insertions(+), 59 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index 6aa07fb049c..ed992333c37 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -8,7 +8,10 @@ import android.content.SharedPreferences import android.content.SharedPreferences.OnSharedPreferenceChangeListener import io.flutter.embedding.engine.plugins.FlutterPlugin.FlutterPluginBinding import io.flutter.plugin.common.BinaryMessenger -import org.junit.Assert +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers @@ -16,11 +19,11 @@ import org.mockito.Mock import org.mockito.Mockito class LegacySharedPreferencesTest { - lateinit var plugin: LegacySharedPreferencesPlugin + private lateinit var plugin: LegacySharedPreferencesPlugin - @Mock lateinit var mockMessenger: BinaryMessenger + @Mock private lateinit var mockMessenger: BinaryMessenger - @Mock lateinit var flutterPluginBinding: FlutterPluginBinding + @Mock private lateinit var flutterPluginBinding: FlutterPluginBinding @Before fun before() { @@ -42,27 +45,27 @@ class LegacySharedPreferencesTest { @Test fun getAll() { - Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + assertEquals(0, plugin.getAll("", null).size) addData() val flutterData: Map = plugin.getAll("flutter.", null) - Assert.assertEquals(5, flutterData.size.toLong()) - Assert.assertEquals("Java", flutterData["flutter.Language"]) - Assert.assertEquals(0L, flutterData["flutter.Counter"]) - Assert.assertEquals(3.14, flutterData["flutter.Pie"]) - Assert.assertEquals(flutterData["flutter.Names"], listOf("Flutter", "Dart").toString()) - Assert.assertEquals(false, flutterData["flutter.NewToFlutter"]) + assertEquals(5, flutterData.size) + assertEquals("Java", flutterData["flutter.Language"]) + assertEquals(0L, flutterData["flutter.Counter"]) + assertEquals(3.14, flutterData["flutter.Pie"]) + assertEquals(flutterData["flutter.Names"], listOf("Flutter", "Dart").toString()) + assertEquals(false, flutterData["flutter.NewToFlutter"]) val allData: Map = plugin.getAll("", null) - Assert.assertEquals(data, allData) + assertEquals(data, allData) } @Test fun allowList() { - Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + assertEquals(0, plugin.getAll("", null).size) addData() @@ -70,20 +73,20 @@ class LegacySharedPreferencesTest { var allData: Map = plugin.getAll("flutter.", allowList) - Assert.assertEquals(1, allData.size.toLong()) - Assert.assertEquals("Java", allData["flutter.Language"]) - Assert.assertNull(allData["flutter.Counter"]) + assertEquals(1, allData.size) + assertEquals("Java", allData["flutter.Language"]) + assertNull(allData["flutter.Counter"]) allData = plugin.getAll("", allowList) - Assert.assertEquals(1, allData.size.toLong()) - Assert.assertEquals("Java", allData["flutter.Language"]) - Assert.assertNull(allData["flutter.Counter"]) + assertEquals(1, allData.size) + assertEquals("Java", allData["flutter.Language"]) + assertNull(allData["flutter.Counter"]) allData = plugin.getAll("prefix.", allowList) - Assert.assertEquals(0, allData.size.toLong()) - Assert.assertNull(allData["flutter.Language"]) + assertEquals(0, allData.size) + assertNull(allData["flutter.Language"]) } @Test @@ -92,7 +95,7 @@ class LegacySharedPreferencesTest { val value = "Java" plugin.setString(key, value) val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + assertEquals(value, flutterData[key]) } @Test @@ -101,7 +104,7 @@ class LegacySharedPreferencesTest { val value = 0L plugin.setInt(key, value) val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + assertEquals(value, flutterData[key]) } @Test @@ -110,16 +113,16 @@ class LegacySharedPreferencesTest { val value = 3.14 plugin.setDouble(key, value) val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + assertEquals(value, flutterData[key]) } @Test fun setEncodedStringListSetsAndGetsString() { val key = "Names" - val value = listOf("Flutter", "Dart").toString() + val value = listOf("Flutter", "Dart").toString() plugin.setEncodedStringList(key, value) val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(flutterData[key], value) + assertEquals(flutterData[key], value) } @Test @@ -128,40 +131,40 @@ class LegacySharedPreferencesTest { val value = false plugin.setBool(key, value) val flutterData: Map = plugin.getAll("", null) - Assert.assertEquals(value, flutterData[key]) + assertEquals(value, flutterData[key]) } @Test fun clearWithNoAllowList() { addData() - Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + assertEquals(15, plugin.getAll("", null).size) plugin.clear("flutter.", null) - Assert.assertEquals(10, plugin.getAll("", null).size.toLong()) + assertEquals(10, plugin.getAll("", null).size) } @Test fun clearWithAllowList() { addData() - Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + assertEquals(15, plugin.getAll("", null).size) plugin.clear("flutter.", listOf("flutter.Language")) - Assert.assertEquals(14, plugin.getAll("", null).size.toLong()) + assertEquals(14, plugin.getAll("", null).size) } @Test fun clearAll() { addData() - Assert.assertEquals(15, plugin.getAll("", null).size.toLong()) + assertEquals(15, plugin.getAll("", null).size) plugin.clear("", null) - Assert.assertEquals(0, plugin.getAll("", null).size.toLong()) + assertEquals(0, plugin.getAll("", null).size) } @Test @@ -169,31 +172,31 @@ class LegacySharedPreferencesTest { val key = "NewToFlutter" val value = true plugin.setBool(key, value) - assert(plugin.getAll("", null).containsKey(key)) + assertTrue(plugin.getAll("", null).containsKey(key)) plugin.remove(key) - Assert.assertFalse(plugin.getAll("", null).containsKey(key)) + assertFalse(plugin.getAll("", null).containsKey(key)) } private fun addData() { plugin.setString("Language", "Java") plugin.setInt("Counter", 0L) plugin.setDouble("Pie", 3.14) - plugin.setEncodedStringList("Names", listOf("Flutter", "Dart").toString()) + plugin.setEncodedStringList("Names", listOf("Flutter", "Dart").toString()) plugin.setBool("NewToFlutter", false) plugin.setString("flutter.Language", "Java") plugin.setInt("flutter.Counter", 0L) plugin.setDouble("flutter.Pie", 3.14) - plugin.setEncodedStringList("flutter.Names", listOf("Flutter", "Dart").toString()) + plugin.setEncodedStringList("flutter.Names", listOf("Flutter", "Dart").toString()) plugin.setBool("flutter.NewToFlutter", false) plugin.setString("prefix.Language", "Java") plugin.setInt("prefix.Counter", 0L) plugin.setDouble("prefix.Pie", 3.14) - plugin.setEncodedStringList("prefix.Names", listOf("Flutter", "Dart").toString()) + plugin.setEncodedStringList("prefix.Names", listOf("Flutter", "Dart").toString()) plugin.setBool("prefix.NewToFlutter", false) } /** A dummy implementation for tests for use with FakeSharedPreferences */ - class FakeSharedPreferencesEditor + private class FakeSharedPreferencesEditor internal constructor(private val sharedPrefData: MutableMap) : SharedPreferences.Editor { override fun putString(key: String, value: String?): SharedPreferences.Editor { @@ -246,7 +249,7 @@ class LegacySharedPreferencesTest { /** A dummy implementation of SharedPreferences for tests that store values in memory. */ private class FakeSharedPreferences : SharedPreferences { - var sharedPrefData: MutableMap = HashMap() + val sharedPrefData = mutableMapOf() override fun getAll(): Map { return sharedPrefData @@ -313,24 +316,22 @@ class LegacySharedPreferencesTest { } companion object { - private val data: MutableMap = HashMap() - - init { - data["Language"] = "Java" - data["Counter"] = 0L - data["Pie"] = 3.14 - data["Names"] = listOf("Flutter", "Dart").toString() - data["NewToFlutter"] = false - data["flutter.Language"] = "Java" - data["flutter.Counter"] = 0L - data["flutter.Pie"] = 3.14 - data["flutter.Names"] = listOf("Flutter", "Dart").toString() - data["flutter.NewToFlutter"] = false - data["prefix.Language"] = "Java" - data["prefix.Counter"] = 0L - data["prefix.Pie"] = 3.14 - data["prefix.Names"] = listOf("Flutter", "Dart").toString() - data["prefix.NewToFlutter"] = false - } + private val data = + mapOf( + "Language" to "Java", + "Counter" to 0L, + "Pie" to 3.14, + "Names" to listOf("Flutter", "Dart").toString(), + "NewToFlutter" to false, + "flutter.Language" to "Java", + "flutter.Counter" to 0L, + "flutter.Pie" to 3.14, + "flutter.Names" to listOf("Flutter", "Dart").toString(), + "flutter.NewToFlutter" to false, + "prefix.Language" to "Java", + "prefix.Counter" to 0L, + "prefix.Pie" to 3.14, + "prefix.Names" to listOf("Flutter", "Dart").toString(), + "prefix.NewToFlutter" to false) } } From 438f590fa3f59b716960192d0e3c8fe59d6d9ddd Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 13 Jul 2026 13:12:41 -0400 Subject: [PATCH 07/12] Minor cleanup --- .../sharedpreferences/LegacySharedPreferencesTest.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index ed992333c37..ef2be63339d 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -197,8 +197,7 @@ class LegacySharedPreferencesTest { /** A dummy implementation for tests for use with FakeSharedPreferences */ private class FakeSharedPreferencesEditor - internal constructor(private val sharedPrefData: MutableMap) : - SharedPreferences.Editor { + constructor(private val sharedPrefData: MutableMap) : SharedPreferences.Editor { override fun putString(key: String, value: String?): SharedPreferences.Editor { sharedPrefData[key] = value return this @@ -301,10 +300,7 @@ class LegacySharedPreferencesTest { } } - /** - * A dummy implementation of SharedPreferencesListEncoder for tests that store List. - * - */ + /** A dummy implementation of SharedPreferencesListEncoder for tests that store List. */ internal class ListEncoder : SharedPreferencesListEncoder { override fun encode(list: List): String { return list.joinToString(separator = ";-;") From 023ec07ab7ef0f19eb584689c8834197c56968f3 Mon Sep 17 00:00:00 2001 From: stuartmorgan-g Date: Mon, 13 Jul 2026 13:20:53 -0400 Subject: [PATCH 08/12] Update packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../plugins/sharedpreferences/LegacySharedPreferencesTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index ef2be63339d..7a32f04b5ac 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -55,7 +55,7 @@ class LegacySharedPreferencesTest { assertEquals("Java", flutterData["flutter.Language"]) assertEquals(0L, flutterData["flutter.Counter"]) assertEquals(3.14, flutterData["flutter.Pie"]) - assertEquals(flutterData["flutter.Names"], listOf("Flutter", "Dart").toString()) + assertEquals(listOf("Flutter", "Dart").toString(), flutterData["flutter.Names"]) assertEquals(false, flutterData["flutter.NewToFlutter"]) val allData: Map = plugin.getAll("", null) From 66c9a0a757414c4dcc803733193a4b05c9e5ff62 Mon Sep 17 00:00:00 2001 From: stuartmorgan-g Date: Mon, 13 Jul 2026 13:21:00 -0400 Subject: [PATCH 09/12] Update packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../plugins/sharedpreferences/LegacySharedPreferencesTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index 7a32f04b5ac..b57fefa5539 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -122,7 +122,7 @@ class LegacySharedPreferencesTest { val value = listOf("Flutter", "Dart").toString() plugin.setEncodedStringList(key, value) val flutterData: Map = plugin.getAll("", null) - assertEquals(flutterData[key], value) + assertEquals(value, flutterData[key]) } @Test From 49ef476c95a6138981798dc7585e423e4839fcdb Mon Sep 17 00:00:00 2001 From: stuartmorgan-g Date: Mon, 13 Jul 2026 13:21:43 -0400 Subject: [PATCH 10/12] Remove mock annotation --- .../plugins/sharedpreferences/LegacySharedPreferencesTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index b57fefa5539..c70adc90849 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -21,9 +21,9 @@ import org.mockito.Mockito class LegacySharedPreferencesTest { private lateinit var plugin: LegacySharedPreferencesPlugin - @Mock private lateinit var mockMessenger: BinaryMessenger + private lateinit var mockMessenger: BinaryMessenger - @Mock private lateinit var flutterPluginBinding: FlutterPluginBinding + private lateinit var flutterPluginBinding: FlutterPluginBinding @Before fun before() { From 988b99292e457a47c74e9d56a86d12f4a302fad7 Mon Sep 17 00:00:00 2001 From: stuartmorgan-g Date: Mon, 13 Jul 2026 15:32:31 -0400 Subject: [PATCH 11/12] Remove stale import --- .../plugins/sharedpreferences/LegacySharedPreferencesTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index c70adc90849..44a6c2a388f 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -15,7 +15,6 @@ import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers -import org.mockito.Mock import org.mockito.Mockito class LegacySharedPreferencesTest { From b29d2dca6f60f87fac40ee5441005b1a40eaa775 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Tue, 14 Jul 2026 08:24:03 -0400 Subject: [PATCH 12/12] language=Kotlin --- .../LegacySharedPreferencesTest.kt | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt index 44a6c2a388f..1b401cf8f9a 100644 --- a/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt +++ b/packages/shared_preferences/shared_preferences_android/android/src/test/kotlin/io/flutter/plugins/sharedpreferences/LegacySharedPreferencesTest.kt @@ -51,7 +51,7 @@ class LegacySharedPreferencesTest { val flutterData: Map = plugin.getAll("flutter.", null) assertEquals(5, flutterData.size) - assertEquals("Java", flutterData["flutter.Language"]) + assertEquals("Kotlin", flutterData["flutter.Language"]) assertEquals(0L, flutterData["flutter.Counter"]) assertEquals(3.14, flutterData["flutter.Pie"]) assertEquals(listOf("Flutter", "Dart").toString(), flutterData["flutter.Names"]) @@ -73,13 +73,13 @@ class LegacySharedPreferencesTest { var allData: Map = plugin.getAll("flutter.", allowList) assertEquals(1, allData.size) - assertEquals("Java", allData["flutter.Language"]) + assertEquals("Kotlin", allData["flutter.Language"]) assertNull(allData["flutter.Counter"]) allData = plugin.getAll("", allowList) assertEquals(1, allData.size) - assertEquals("Java", allData["flutter.Language"]) + assertEquals("Kotlin", allData["flutter.Language"]) assertNull(allData["flutter.Counter"]) allData = plugin.getAll("prefix.", allowList) @@ -91,7 +91,7 @@ class LegacySharedPreferencesTest { @Test fun setString() { val key = "language" - val value = "Java" + val value = "Kotlin" plugin.setString(key, value) val flutterData: Map = plugin.getAll("", null) assertEquals(value, flutterData[key]) @@ -177,17 +177,17 @@ class LegacySharedPreferencesTest { } private fun addData() { - plugin.setString("Language", "Java") + plugin.setString("Language", "Kotlin") plugin.setInt("Counter", 0L) plugin.setDouble("Pie", 3.14) plugin.setEncodedStringList("Names", listOf("Flutter", "Dart").toString()) plugin.setBool("NewToFlutter", false) - plugin.setString("flutter.Language", "Java") + plugin.setString("flutter.Language", "Kotlin") plugin.setInt("flutter.Counter", 0L) plugin.setDouble("flutter.Pie", 3.14) plugin.setEncodedStringList("flutter.Names", listOf("Flutter", "Dart").toString()) plugin.setBool("flutter.NewToFlutter", false) - plugin.setString("prefix.Language", "Java") + plugin.setString("prefix.Language", "Kotlin") plugin.setInt("prefix.Counter", 0L) plugin.setDouble("prefix.Pie", 3.14) plugin.setEncodedStringList("prefix.Names", listOf("Flutter", "Dart").toString()) @@ -313,17 +313,17 @@ class LegacySharedPreferencesTest { companion object { private val data = mapOf( - "Language" to "Java", + "Language" to "Kotlin", "Counter" to 0L, "Pie" to 3.14, "Names" to listOf("Flutter", "Dart").toString(), "NewToFlutter" to false, - "flutter.Language" to "Java", + "flutter.Language" to "Kotlin", "flutter.Counter" to 0L, "flutter.Pie" to 3.14, "flutter.Names" to listOf("Flutter", "Dart").toString(), "flutter.NewToFlutter" to false, - "prefix.Language" to "Java", + "prefix.Language" to "Kotlin", "prefix.Counter" to 0L, "prefix.Pie" to 3.14, "prefix.Names" to listOf("Flutter", "Dart").toString(),