public void SavedSelectedDeviceIsPickedDuringRestart(bool restartRuntime)
    {
        InitRuntimeStatic(true);
        try
        {
            var consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            var query         = PrepareQuery();

            // Pretend to be a user and select the device
            query.SelectDevice(query.Devices["myandroid2"]);
            ScriptableObject.DestroyImmediate(consoleWindow);
            if (restartRuntime)
            {
                ShutdownRuntimeStatic(false);

                InitRuntimeStatic(false);
            }
            Assert.AreEqual("myandroid2", m_Runtime.ProjectSettings.LastSelectedDeviceId);
            query         = PrepareQuery();
            consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            // Since the selected device was saved in player settings
            // Console window should auto select it
            m_Runtime.OnUpdate();
            Assert.AreEqual(query.Devices["myandroid2"], query.SelectedDevice);

            ScriptableObject.DestroyImmediate(consoleWindow);
        }
        finally
        {
            ShutdownRuntimeStatic(true);
        }
    }
    private AndroidLogcatTestConsoleWindow StartPlayerSettingsTest()
    {
        InitRuntimeStatic(true);
        Assert.IsFalse(File.Exists(AndroidLogcatTestRuntime.kUserSettingsPath));

        var consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();

        m_Runtime.UserSettings.Tags.Add(kMyCustomTag);

        return(consoleWindow);
    }
    private void StopPlayerSettingsTest()
    {
        // Check if player settings have our new tag saved
        var contents = File.ReadAllText(AndroidLogcatTestRuntime.kUserSettingsPath);

        Assert.IsTrue(contents.Contains(kMyCustomTag));

        // Resume runtime and see if we can restore player settings
        InitRuntimeStatic(false);
        Assert.IsTrue(File.Exists(AndroidLogcatTestRuntime.kUserSettingsPath));
        var consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();

        Assert.IsTrue(m_Runtime.UserSettings.Tags.Entries.Where(m => m.Name.Equals(kMyCustomTag)).First() != null);

        ScriptableObject.DestroyImmediate(consoleWindow);
        ShutdownRuntimeStatic(true);
    }
    public void SavedSelectedPackageIsPickedDuringRestart(bool restartRuntime)
    {
        if (!AndroidBridge.AndroidExtensionsInstalled && restartRuntime)
        {
            Console.WriteLine("Test ignored, since Android Logcat deserialization doesn't work when Android Support is not installed");
            return;
        }
        InitRuntimeStatic(true);
        try
        {
            var packageName   = "com.unity.test";
            var deviceName    = "myandroid2";
            var consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            var query         = PrepareQuery();

            var device = query.Devices[deviceName];
            // Pretend to be a user and select the device
            query.SelectDevice(device);
            m_Runtime.UserSettings.LastSelectedPackage = m_Runtime.UserSettings.CreatePackageInformation(packageName, 1, device);

            ScriptableObject.DestroyImmediate(consoleWindow);
            if (restartRuntime)
            {
                ShutdownRuntimeStatic(false);

                InitRuntimeStatic(false);
            }

            Assert.AreEqual(deviceName, m_Runtime.UserSettings.LastSelectedDeviceId);
            Assert.AreEqual(packageName, m_Runtime.UserSettings.LastSelectedPackage.name);

            query         = PrepareQuery();
            consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            m_Runtime.OnUpdate();

            // Check if Console Window didn't repick a different device/package
            Assert.AreEqual(query.Devices[deviceName], query.SelectedDevice);
            Assert.AreEqual(packageName, m_Runtime.UserSettings.LastSelectedPackage.name);

            ScriptableObject.DestroyImmediate(consoleWindow);
        }
        finally
        {
            ShutdownRuntimeStatic(true);
        }
    }
    public void SavedSelectedPackageIsPickedDuringRestart(bool restartRuntime)
    {
        InitRuntimeStatic(true);
        try
        {
            var packageName   = "com.unity.test";
            var deviceName    = "myandroid2";
            var consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            var query         = PrepareQuery();

            var device = query.Devices[deviceName];
            // Pretend to be a user and select the device
            query.SelectDevice(device);
            m_Runtime.ProjectSettings.LastSelectedPackage = m_Runtime.ProjectSettings.CreatePackageInformation(packageName, 1, device);

            ScriptableObject.DestroyImmediate(consoleWindow);
            if (restartRuntime)
            {
                ShutdownRuntimeStatic(false);

                InitRuntimeStatic(false);
            }

            Assert.AreEqual(deviceName, m_Runtime.ProjectSettings.LastSelectedDeviceId);
            Assert.AreEqual(packageName, m_Runtime.ProjectSettings.LastSelectedPackage.name);

            query         = PrepareQuery();
            consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            m_Runtime.OnUpdate();

            // Check if Console Window didn't repick a different device/package
            Assert.AreEqual(query.Devices[deviceName], query.SelectedDevice);
            Assert.AreEqual(packageName, m_Runtime.ProjectSettings.LastSelectedPackage.name);

            ScriptableObject.DestroyImmediate(consoleWindow);
        }
        finally
        {
            ShutdownRuntimeStatic(true);
        }
    }
    public void SavedSelectedDeviceIsPickedDuringRestart(bool restartRuntime)
    {
        if (!AndroidBridge.AndroidExtensionsInstalled && restartRuntime)
        {
            Console.WriteLine("Test ignored, since Android Logcat deserialization doesn't work when Android Support is not installed");
            return;
        }

        InitRuntimeStatic(true);
        try
        {
            var consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            var query         = PrepareQuery();

            // Pretend to be a user and select the device
            query.SelectDevice(query.Devices["myandroid2"]);
            ScriptableObject.DestroyImmediate(consoleWindow);
            if (restartRuntime)
            {
                ShutdownRuntimeStatic(false);

                InitRuntimeStatic(false);
            }
            Assert.AreEqual("myandroid2", m_Runtime.UserSettings.LastSelectedDeviceId);
            query         = PrepareQuery();
            consoleWindow = AndroidLogcatTestConsoleWindow.CreateInstance <AndroidLogcatTestConsoleWindow>();
            // Since the selected device was saved in player settings
            // Console window should auto select it
            m_Runtime.OnUpdate();
            Assert.AreEqual(query.Devices["myandroid2"], query.SelectedDevice);

            ScriptableObject.DestroyImmediate(consoleWindow);
        }
        finally
        {
            ShutdownRuntimeStatic(true);
        }
    }