﻿#if !NETFX_CORE
using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
using UnityEngine.SceneManagement;
using I2.Loc;
using UnityEngine.UI;
#pragma warning disable 618


public class I2Loc_PlayTest_Online
{
    [UnityTest, Category("Online")]
    public IEnumerator I2LocTest_RealtimeTranslation()
    {
        SceneManager.LoadScene("I2Localization    features Realtime Translation");
        yield return null;

        var mainScript = I2Utils.FindObject("Translation << Click Play >>").GetComponent<RealTimeTranslation>();
        mainScript.SetOriginalText("This is an [color=#fff] example [/color]. Second <ba> line <gi> is very </gi> bold </ba> but nice. Third {[PLACE]} has a [i2nt]parameter[/i2nt]");
        mainScript.StartTranslating("en", "es");
        yield return new WaitWhile(mainScript.IsWaitingForTranslation);

        var translation = mainScript.GetTranslatedText();
        Assert.IsTrue(translation.Contains("Este es un") && translation.Contains("[color=#fff]") && translation.Contains("{[PLACE]}"));
        //Assert.IsTrue(mainScript.GetTranslatedText() == "Este es un [color=#fff] ejemplo [/color]. La segunda <ba> línea <gi> es muy </gi> negrita </ba> pero agradable. Tercero {[PLACE]} tiene un [i2nt]parameter[/i2nt]");

        mainScript.ExampleMultiTranslations_Async();
        yield return new WaitWhile(mainScript.IsWaitingForTranslation);
        translation = mainScript.GetTranslatedText();
        Assert.IsTrue(translation.Contains("ejemplo") && translation.Contains("这是一个例子") && translation.Contains("\nHello"));
        //Assert.IsTrue(mainScript.GetTranslatedText() == "Esto es un ejemplo\n这是一个例子\nEsto es un ejemplo\nHello");




        // WARNING: On Some unity versions, this blocks the main thread and locks unity

        // Force MultiTranslations
        TestLogger.Enable();
        mainScript.ExampleMultiTranslations_Blocking();
        var text = TestLogger.Disable();
        Assert.IsTrue(text.Contains("ejemplo") && text.Contains("这是一个例子") && text.Contains("\nHello"));
        //Assert.IsTrue(text == "Null\r\n这是一个例子\r\nEsto es un ejemplo\r\nHello\r\n");

        // Force Single Translation
        translation = GoogleTranslation.ForceTranslate("This is an [color=#fff] example [/color]. Second <ba> line <gi> is very </gi> bold </ba> but nice. Third {[PLACE]} has a [i2nt]parameter[/i2nt]", "en", "es");
        Assert.IsTrue(translation.Contains("ejemplo") && translation.Contains("[color=#fff]") && translation.Contains("{[PLACE]}"));
        //Assert.IsTrue(translation == "Este es un [color=#fff] ejemplo [/color]. La segunda <ba> línea <gi> es muy </gi> negrita </ba> pero agradable. Tercero {[PLACE]} tiene un [i2nt]parameter[/i2nt]");
    }
}
#endif