// Copyright 2013 The Flutter Authors. All rights reserved.
// 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 org.junit.Test;

public class SharedPreferencesTest {
  // This is only a placeholder test and doesn't actually initialize the plugin.
  @Test
  public void initPluginDoesNotThrow() {
    final SharedPreferencesPlugin plugin = new SharedPreferencesPlugin();
  }
}
