Package com.goodow.realtime.store

Source Code of com.goodow.realtime.store.CollaborativeMapTest

/*
* Copyright 2012 Goodow.com
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.goodow.realtime.store;

import com.goodow.realtime.channel.server.impl.VertxPlatform;
import com.goodow.realtime.core.Handler;
import com.goodow.realtime.json.Json;
import com.goodow.realtime.json.JsonArray;
import com.goodow.realtime.json.JsonObject;
import com.goodow.realtime.store.impl.MemoryStore;

import org.junit.Test;
import org.vertx.testtools.TestVerticle;
import org.vertx.testtools.VertxAssert;

public class CollaborativeMapTest extends TestVerticle {
  Model mod;
  CollaborativeMap map;

  @Override
  public void start() {
    initialize();
    VertxPlatform.register(vertx);

    Store store = new MemoryStore();
    store.load("docId", new Handler<Document>() {
      @Override
      public void handle(Document doc) {
        mod = doc.getModel();
        map = mod.createMap(null);

        startTests();
      }
    }, null, null);
  }

  @Test
  public void testClear() {
    map.set("k1", "v1");
    map.set("k2", "v2");
    map.clear();
    VertxAssert.assertEquals(0, map.size());

    VertxAssert.testComplete();
  }

  @Test
  public void testEventHandler() {
    final JsonArray events = Json.createArray();
    map.onValueChanged(new Handler<ValueChangedEvent>() {
      @Override
      public void handle(ValueChangedEvent event) {
        VertxAssert.assertEquals(EventType.VALUE_CHANGED, event.type());
        VertxAssert.assertTrue(event.isLocal());
        events.push(event);
      }
    });
    map.onObjectChanged(new Handler<ObjectChangedEvent>() {
      @Override
      public void handle(ObjectChangedEvent event) {
        CollaborativeStringTest.assertArraySame(events, event.events());
        VertxAssert.assertEquals("a", events.<ValueChangedEvent>get(0).property());
        VertxAssert.assertEquals(null, events.<ValueChangedEvent>get(0).oldValue());
        VertxAssert.assertEquals(3.0, events.<ValueChangedEvent>get(0).newValue());
        VertxAssert.assertEquals("a", events.<ValueChangedEvent>get(1).property());
        VertxAssert.assertEquals(3.0, events.<ValueChangedEvent>get(1).oldValue());
        VertxAssert.assertEquals(Json.createObject().set("a", true).set("b", 1.0), events
            .<ValueChangedEvent>get(1).newValue());
        VertxAssert.assertEquals("a", events.<ValueChangedEvent>get(2).property());
        VertxAssert.assertEquals(Json.createObject().set("a", true).set("b", 1.0), events
            .<ValueChangedEvent>get(2).oldValue());
        VertxAssert.assertEquals(null, events.<ValueChangedEvent>get(2).newValue());

        VertxAssert.assertEquals("x", events.<ValueChangedEvent>get(5).property());
        VertxAssert.assertEquals(null, events.<ValueChangedEvent>get(5).oldValue());
        VertxAssert.assertEquals(true, events.<ValueChangedEvent>get(5).newValue());

        VertxAssert.testComplete();
      }
    });
    map.set("a", 3);
    map.set("a", Json.createObject().set("a", true).set("b", 1.0));
    map.remove("a");

    CollaborativeMap map2 = mod.createMap(null);
    CollaborativeList list = mod.createList(null);
    list.onValuesAdded(new Handler<ValuesAddedEvent>() {
      @Override
      public void handle(ValuesAddedEvent event) {
        events.push(event);
      }
    });
    list.push(map2);
    map.set("c", list);
    map2.onValueChanged(new Handler<ValueChangedEvent>() {
      @Override
      public void handle(ValueChangedEvent event) {
        events.push(event);
      }
    });
    map2.set("x", true);
  }

  @Test
  public void testIllegalArgumentException() {
    try {
      map.set(null, "");
      VertxAssert.fail();
    } catch (IllegalArgumentException e) {
    }
    VertxAssert.testComplete();
  }

  @Test
  public void testInitialize() {
    VertxAssert.assertEquals(0, map.size());
    VertxAssert.assertTrue(map.isEmpty());

    JsonObject v4 = Json.createObject();
    v4.set("subKey", "subValue");
    JsonObject initialValue = Json.createObject();
    initialValue.set("k1", "v1").set("k2", 2).set("k3", true).set("k4", v4);
    map = mod.createMap(initialValue);
    VertxAssert.assertEquals(4, map.size());
    VertxAssert.assertEquals("v1", map.get("k1"));
    VertxAssert.assertEquals(2d, (Double) map.get("k2"), 0d);
    VertxAssert.assertEquals(true, map.get("k3"));
    VertxAssert.assertTrue(v4.toJsonString().equals(map.<JsonObject> get("k4").toJsonString()));
    VertxAssert.assertFalse(map.isEmpty());

    VertxAssert.testComplete();
  }

  @Test
  public void testItems() {
    map.set("k1", "v1");
    map.set("k2", "v2");
    JsonArray items = map.items();
    VertxAssert.assertEquals("k1", items.getArray(0).getString(0));
    VertxAssert.assertEquals("v1", items.getArray(0).getString(1));
    VertxAssert.assertEquals("k2", items.getArray(1).getString(0));
    VertxAssert.assertEquals("v2", items.getArray(1).getString(1));

    VertxAssert.testComplete();
  }

  @Test
  public void testRemove() {
    map.set("k1", "v1");
    VertxAssert.assertEquals("v1", map.remove("k1"));
    VertxAssert.assertNull(map.remove("k2"));
    VertxAssert.assertEquals(0, map.size());

    VertxAssert.testComplete();
  }

  @Test
  public void testSet() {
    JsonArray v4 = Json.createArray();
    v4.push("abc");
    VertxAssert.assertNull(map.set("k1", "v1"));
    VertxAssert.assertNull(map.set("k2", 4));
    VertxAssert.assertNull(map.set("k3", false));
    VertxAssert.assertNull(map.set("k4", v4));
    VertxAssert.assertNull(map.set("k5", null));
    VertxAssert.assertNull(map.set("k6", null));

    VertxAssert.assertEquals(4, map.size());
    VertxAssert.assertEquals("v1", map.get("k1"));
    VertxAssert.assertEquals(4d, map.<Double> get("k2"), 0d);
    VertxAssert.assertEquals(false, map.get("k3"));
    VertxAssert.assertTrue(v4.toJsonString().equals(map.<JsonArray> get("k4").toJsonString()));

    VertxAssert.assertEquals("v1", map.set("k1", ""));
    VertxAssert.assertEquals(4.0, map.set("k2", null));
    VertxAssert.assertEquals(false, map.set("k3", null));
    VertxAssert.assertEquals(2, map.size());
    VertxAssert.assertEquals("", map.get("k1"));
    VertxAssert.assertFalse(map.has("k2"));
    VertxAssert.assertFalse(map.has("k3"));

    VertxAssert.testComplete();
  }

  @Test
  public void testValues() {
    map.set("k1", "v1");
    map.set("k2", "v2");
    JsonArray values = map.values();
    VertxAssert.assertEquals("v1", values.get(0));
    VertxAssert.assertEquals("v2", values.get(1));

    VertxAssert.testComplete();
  }
}
TOP

Related Classes of com.goodow.realtime.store.CollaborativeMapTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.