Package com.gwtmobile.persistence.test.client

Source Code of com.gwtmobile.persistence.test.client.TestPersistence

package com.gwtmobile.persistence.test.client;

import java.util.Date;

import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.junit.client.GWTTestCase;
import com.gwtmobile.persistence.client.Callback;
import com.gwtmobile.persistence.client.Collection;
import com.gwtmobile.persistence.client.CollectionCallback;
import com.gwtmobile.persistence.client.Entity;
import com.gwtmobile.persistence.client.Persistence;
import com.gwtmobile.persistence.client.ScalarCallback;
import com.gwtmobile.persistence.test.domain.Category;
import com.gwtmobile.persistence.test.domain.Tag;
import com.gwtmobile.persistence.test.domain.Task;

public class TestPersistence extends GWTTestCase {

  Entity<Task> taskEntity;
  Entity<Tag> tagEntity;
  Entity<Category> categoryEntity;
 
  @Override
  public String getModuleName() {
    return "com.gwtmobile.persistence.test.gwtmobile_persistence_test";
  }

  public void testList() {
    setupTest(new Callback() {
      public void onSuccess() {
        Collection<Task> allTasks = taskEntity.all();
        allTasks.list(new CollectionCallback<Task>() {
          public void onSuccess(Task[] results) {
            assertEquals(5, results.length);
            tearDownTest();
          }
        });
      }
    });           
  }

  public void testListEach() {
    setupTest(new Callback() {
      int count = 0;
      public void onSuccess() {
        Collection<Task> allTasks = taskEntity.all();
        allTasks.each(new ScalarCallback<Task>() {
          public void onSuccess(Task result) {
            count++;
            if (count == 5) {
              tearDownTest();
            }
          }
        });
      }
    });           
  }

  public void testListLimits() {
    setupTest(new Callback() {
      public void onSuccess() {
        Collection<Task> limit3 = taskEntity.all().limit(3);
        limit3.list(new CollectionCallback<Task>() {
          public void onSuccess(Task[] results) {
            assertEquals(3, results.length);
            tearDownTest();
          }
        });
      }
    });           
  }

  public void testListOrder() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().order("Name", false).one(
            new ScalarCallback<Task>() {
              public void onSuccess(Task result) {
                assertEquals("Task4", result.getName());
                tearDownTest();
              }
            });
      }
    });           
  }
 
  public void testFilterChar() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().filter("Alphabet", ">", 'A').count(new ScalarCallback<Integer>() {         
          @Override
          public void onSuccess(Integer result) {
            assertEquals(2, result.intValue());
            tearDownTest();
          }
        });
      }
    });           
  }
 
  public void testFilterBoolean() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().filter("Done", "=", true).count(new ScalarCallback<Integer>() {         
          @Override
          public void onSuccess(Integer result) {
            assertEquals(3, result.intValue());
            tearDownTest();
          }
        });
      }
    });           
  }
 
  public void testFilterInteger() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().filter("Priority", ">=", 4).count(new ScalarCallback<Integer>() {         
          @Override
          public void onSuccess(Integer result) {
            assertEquals(1, result.intValue());
            tearDownTest();
          }
        });
      }
    });           
  }
 
  public void testFilterDouble() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().filter("Profit", ">", 1.0).count(new ScalarCallback<Integer>() {         
          @Override
          public void onSuccess(Integer result) {
            assertEquals(2, result.intValue());
            tearDownTest();
          }
        });
      }
    });           
  }
 
  public void testFilterString() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().filter("Name", "=", "Task2").count(new ScalarCallback<Integer>() {         
          @Override
          public void onSuccess(Integer result) {
            assertEquals(1, result.intValue());
            tearDownTest();
          }
        });
      }
    });           
  }

  public void testFilterDate() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().filter("CompleteDate", "<", new Date()).count(new ScalarCallback<Integer>() {         
          @Override
          public void onSuccess(Integer result) {
            assertEquals(3, result.intValue());
            tearDownTest();
          }
        });
      }
    });           
  }
 
  public void testEntityFindByChar() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.findBy(null, "Alphabet", 'C', new ScalarCallback<Task>(){
          @Override
          public void onSuccess(final Task result1) {
            assertNotNull(result1);
            System.out.println(result1.getAlphabet());
            taskEntity.load(null, result1.getId(), new ScalarCallback<Task>() {         
              @Override
              public void onSuccess(Task result2) {
                assertNotNull(result2);
                assertEquals(result1.getAlphabet(), result2.getAlphabet());
                tearDownTest();
              }
            });
          }});
       
      }
    });
  }

  public void testEntityFindByDate() {
    setupTest(new Callback() {
      @SuppressWarnings("deprecation")
      public void onSuccess() {
        taskEntity.findBy(null, "CompleteDate", new Date("2010/12/01"), new ScalarCallback<Task>(){
          @Override
          public void onSuccess(final Task result1) {
            assertNotNull(result1);
            System.out.println(result1.getCompleteDate().toString());
            taskEntity.load(null, result1.getId(), new ScalarCallback<Task>() {         
              @Override
              public void onSuccess(Task result2) {
                assertNotNull(result2);
                assertEquals(result1.getCompleteDate(), result2.getCompleteDate());               
                tearDownTest();
              }
            });
          }});
       
      }
    });
  }
 
  public void testEntityFindByInteger() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.findBy(null, "Priority", 2, new ScalarCallback<Task>(){
          @Override
          public void onSuccess(final Task result1) {
            assertNotNull(result1);
            System.out.println(result1.getPriority());
            taskEntity.load(null, result1.getId(), new ScalarCallback<Task>() {         
              @Override
              public void onSuccess(Task result2) {
                assertNotNull(result2);
                assertEquals(result1.getPriority(), result2.getPriority());               
                tearDownTest();
              }
            });
          }});
       
      }
    });
  }
 
  public void testEntityFindByDouble() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.findBy(null, "Profit", 24.68, new ScalarCallback<Task>(){
          @Override
          public void onSuccess(final Task result1) {
            assertNotNull(result1);
            System.out.println(result1.getProfit());
            taskEntity.load(null, result1.getId(), new ScalarCallback<Task>() {         
              @Override
              public void onSuccess(Task result2) {
                assertNotNull(result2);
                assertEquals(result1.getProfit(), result2.getProfit());               
                tearDownTest();
              }
            });
          }});
       
      }
    });
  }
 
  public void testEntityFindByString() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.findBy(null, "Name", "Task3", new ScalarCallback<Task>(){
          @Override
          public void onSuccess(final Task result1) {
            assertNotNull(result1);
            System.out.println(result1.getName());
            taskEntity.load(null, result1.getId(), new ScalarCallback<Task>() {         
              @Override
              public void onSuccess(Task result2) {
                assertNotNull(result2);
                assertEquals(result1.getName(), result2.getName());               
                tearDownTest();
              }
            });
          }});
       
      }
    });
  }
 
  public void testEntityFindByBoolean() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.findBy(null, "Done", true, new ScalarCallback<Task>(){
          @Override
          public void onSuccess(final Task result1) {
            assertNotNull(result1);
            System.out.println(result1.getDone());
            taskEntity.load(null, result1.getId(), new ScalarCallback<Task>() {         
              @Override
              public void onSuccess(Task result2) {
                assertNotNull(result2);
                assertEquals(result1.getDone(), result2.getDone());               
                tearDownTest();
              }
            });
          }});
       
      }
    });
  }
 
  public void testInstanceId() {
    setupTest(new Callback() {
      public void onSuccess() {
        taskEntity.all().one(new ScalarCallback<Task>() {         
          @Override
          public void onSuccess(Task result) {
            System.out.print(result.getId());
            assertEquals(32, result.getId().length());
            tearDownTest();
          }
        });
      }
    });           
  }

  public void testInstanceFetch() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            results[0].fetch(null, categoryEntity, new ScalarCallback<Category>() {
              @Override
              public void onSuccess(Category instance) {
                System.out.print(instance.getName());
                tearDownTest();
              }
            });
          }
        });
      }
    });
  }

  public void testInstanceSelectJSON() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            results[0].selectJSON(null, new String[] {"Name", "Description"}, new ScalarCallback<String>() {             
              @Override
              public void onSuccess(String jsonDump) {
                System.out.print(jsonDump);
                tearDownTest();
              }
            });
          }
        });
      }
    });
  }
 
  public void testDumpAndLoad() {
    setupTest(new Callback() {
      public void onSuccess() {
        Persistence.dumpToJson(null, new Entity[] {tagEntity, categoryEntity}, new ScalarCallback<String>() {         
          @Override
          public void onSuccess(final String jsonDump) {
            System.out.print(jsonDump);
            destroyAllData(new Callback() {                     
              @Override
              public void onSuccess() {
                Persistence.loadFromJson(null, jsonDump, new Callback() {                         
                  @Override
                  public void onSuccess() {
                    tagEntity.all().count(new ScalarCallback<Integer>() {                             
                      @Override
                      public void onSuccess(Integer result) {
                        assertEquals(1, result.intValue());
                        tearDownTest();
                      }
                    });
                  }
                });
              }
            });
          }
        });
      }
    });           
  }
 
  public void testPropertyFilterChar() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Alphabet", "=", 'A')
        .or(Persistence.newPropertyFilter("Alphabet", "=", 'C'))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(2, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testPropertyFilterBoolean() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Name", "=", "Task1")
        .or(Persistence.newPropertyFilter("Done", "=", true))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(4, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testPropertyFilterInteger() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Done", "!=", true)
        .or(Persistence.newPropertyFilter("Priority", ">", 2))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(3, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testPropertyFilterDouble() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Priority", ">", 2)
        .or(Persistence.newPropertyFilter("Profit", ">", 24.6))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(2, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testPropertyFilterString() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Profit", ">", 24.1)
        .or(Persistence.newPropertyFilter("Name", "=", "Task1"))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(3, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testPropertyFilterDate() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Alphabet", "=", 'A')
        .or(Persistence.newPropertyFilter("CompleteDate", "<", new Date()))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(3, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testOrFilter() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.all().filter("Alphabet", "=", 'A')
        .or(Persistence.newOrFilter(
            Persistence.newPropertyFilter("Alphabet", "=", 'C'),
            Persistence.newPropertyFilter("Alphabet", "=", 'E')))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(3, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testAndFilter() {
    setupTest(new Callback() {
      @SuppressWarnings("deprecation")
      public void onSuccess() {       
        taskEntity.all().filter("Alphabet", ">", 'C')
        .and(Persistence.newAndFilter(
            Persistence.newPropertyFilter("Done", "=", true),
            Persistence.newPropertyFilter("CompleteDate", ">", new Date("2010/12/01"))))
        .list(new CollectionCallback<Task>() {         
          @Override
          public void onSuccess(Task[] results) {
            assertEquals(1, results.length);
            tearDownTest();
          }
        });
      }
    });
  }

  public void testIndex() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.index("Name");
        Persistence.schemaSync(new Callback() {         
          @Override
          public void onSuccess() {
            tearDownTest();
          }
        });
      }
    });
  }

  public void testIndexUnique() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.index("Name", true);
        Persistence.schemaSync(new Callback() {         
          @Override
          public void onSuccess() {
            tearDownTest();
          }
        });
      }
    });
  }

  public void testIndexMultiCols() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.index(new String[] {"Name", "Done"});
        Persistence.schemaSync(new Callback() {         
          @Override
          public void onSuccess() {
            tearDownTest();
          }
        });
      }
    });
  }

  public void testIndexMultiColsUnique() {
    setupTest(new Callback() {
      public void onSuccess() {       
        taskEntity.index(new String[] {"Name", "Done"}, true);
        Persistence.schemaSync(new Callback() {         
          @Override
          public void onSuccess() {
            tearDownTest();
          }
        });
      }
    });
  }

  private void setupTest(final Callback callback) {

    Persistence.connect("MyDB", "My DB", 5 * 1024 * 1024);
    Persistence.setAutoAdd(true);

    taskEntity = GWT.create(Task.class);
    tagEntity = GWT.create(Tag.class);
    categoryEntity = GWT.create(Category.class);

    Persistence.schemaSync(new Callback() {
      @SuppressWarnings("deprecation")
      public void onSuccess()
      {
        destroyAllData(new Callback() {           
          @Override
          public void onSuccess() {
            final Category c = categoryEntity.newInstance();
            c.setName("Main");
            final Tag tag = tagEntity.newInstance();
            tag.setName("Urgent");
            for (int i = 0; i < 5; i++) {
              Task t = taskEntity.newInstance();
              t.setName("Task" + Integer.toString(i));
              t.setDescription("Task No #" + Integer.toString(i));
              if (i % 2 == 0) {
                t.setDone(true);
                t.setCompleteDate(new Date(2010 - 1900, 12 - 1, 1 + i));
                t.setPriority(i);
                t.setPercentage((float)i / 10);
                t.setProfit((double)i * 12.34);
                t.setAlphabet((char) ('A' + i));
                t.setJson((JSONObject) JSONParser.parse("{\"symbol\": \"ABC\", \"price\": 96.204659543522}"));
              }
              t.setCategory(c);
              t.getTags().add(tag);
            }
            Persistence.flush(callback);
          }
        });
      }
    });
    delayTestFinish(5000);
  }

  private void destroyAllData(final Callback callback) {
    taskEntity.all().destroyAll(new Callback() {             
      @Override
      public void onSuccess() {
        tagEntity.all().destroyAll(new Callback() {                 
          @Override
          public void onSuccess() {
            categoryEntity.all().destroyAll(new Callback() {                     
              @Override
              public void onSuccess() {
                Persistence.flush(callback);
              }
            });
          }
        });
      }
    });
  }
 
  private void tearDownTest() {
    Persistence.reset(new Callback() {     
      @Override
      public void onSuccess() {
        finishTest();
      }
    });   
  }
}
TOP

Related Classes of com.gwtmobile.persistence.test.client.TestPersistence

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.