public void TriggerRealmsInfoOnChangeCorrectly()
    {
        const string SERVER_NAME_1 = "temptation";
        const string LAYER_1       = "red";
        const string SERVER_NAME_2 = "temptation";
        const string LAYER_2       = "blue";


        var realm1 = new RealmModel()
        {
            serverName = SERVER_NAME_1,
            layer      = LAYER_1
        };

        var realm2 = new RealmModel()
        {
            serverName = SERVER_NAME_2,
            layer      = LAYER_2
        };

        var testModel = new RealmsInfoModel()
        {
            realms = new RealmModel[] { realm1, realm2 }
        };

        var handler = new RealmsInfoHandler();

        bool onChangeTriggered = false;

        RealmModel[] onChangeCurrentValue = null;

        handler.realmsInfo.OnChange += (current, prev) =>
        {
            onChangeTriggered    = true;
            onChangeCurrentValue = current;
        };

        handler.Set(testModel);
        Assert.IsTrue(onChangeTriggered, "OnChange not triggered");
        Assert.IsTrue(testModel.realms.Length == 2, "Values are not the same");
        Assert.IsTrue(testModel.realms.Equals(onChangeCurrentValue), "Values are not the same");
        Assert.IsTrue(testModel.realms[0].serverName == SERVER_NAME_1, "Values are not the same");
        Assert.IsTrue(testModel.realms[0].layer == LAYER_1, "Values are not the same");
        Assert.IsTrue(testModel.realms[1].serverName == SERVER_NAME_2, "Values are not the same");
        Assert.IsTrue(testModel.realms[1].layer == LAYER_2, "Values are not the same");

        onChangeTriggered = false;
        handler.Set(JsonUtility.ToJson(testModel));
        Assert.IsFalse(onChangeTriggered, "OnChange shouldn't be triggered");
    }
    public void TriggerCurrentRealmOnChangeCorrectly()
    {
        const string SERVER_NAME = "temptation";
        const string LAYER       = "red";

        var handler = new RealmsInfoHandler();

        var testModel = new RealmsInfoModel()
        {
            current = new CurrentRealmModel()
            {
                serverName = SERVER_NAME,
                layer      = LAYER
            }
        };

        bool onChangeTriggered = false;
        CurrentRealmModel onChangeCurrentValue = null;

        handler.playerRealm.OnChange += (current, prev) =>
        {
            onChangeTriggered    = true;
            onChangeCurrentValue = current;
        };

        handler.Set(testModel);
        Assert.IsTrue(onChangeTriggered, "OnChange not triggered");
        Assert.IsTrue(testModel.current.Equals(onChangeCurrentValue), "Values are not the same");
        Assert.IsTrue(testModel.current.serverName == SERVER_NAME, "Values are not the same");
        Assert.IsTrue(testModel.current.layer == LAYER, "Values are not the same");

        onChangeTriggered = false;
        handler.Set(JsonUtility.ToJson(testModel));
        Assert.IsFalse(onChangeTriggered, "OnChange shouldn't be triggered");

        const string NEW_LAYER = "blue";

        testModel.current.layer = NEW_LAYER;

        handler.Set(JsonUtility.ToJson(testModel));
        Assert.IsTrue(testModel.current.Equals(onChangeCurrentValue), "Values are not the same");
        Assert.IsTrue(testModel.current.serverName == SERVER_NAME, "Values are not the same");
        Assert.IsTrue(testModel.current.layer == NEW_LAYER, "Values are not the same");

        onChangeTriggered = false;
        handler.Set(testModel);
        Assert.IsFalse(onChangeTriggered, "OnChange shouldn't be triggered");
    }