Exemplo n.º 1
0
  // See https://github.com/realm/realm-java/issues/1775 .
  // Before 0.84.2, pk table added prefix "class_" to every class's name.
  // After 0.84.2, the pk table should be migrated automatically to remove the "class_".
  // In 0.84.2, the class names in pk table has been renamed to some incorrect names like "Thclass",
  // "Mclass",
  // "NClass", "Meclass" and etc..
  // The 0841_pk_migration.realm is made to produce the issue.
  @Test
  public void primaryKeyTableMigratedWithRightName() throws IOException {
    List<String> tableNames =
        Arrays.asList(
            "ChatList",
            "Drafts",
            "Member",
            "Message",
            "Notifs",
            "NotifyLink",
            "PopularPost",
            "Post",
            "Tags",
            "Threads",
            "User");

    configFactory.copyRealmFromAssets(context, "0841_pk_migration.realm", "default.realm");
    SharedGroup db =
        new SharedGroup(
            new File(configFactory.getRoot(), Realm.DEFAULT_REALM_NAME).getAbsolutePath(),
            SharedGroup.Durability.FULL,
            null);

    ImplicitTransaction tr = db.beginImplicitTransaction();
    // To trigger migratePrimaryKeyTableIfNeeded.
    tr.getTable("class_ChatList").getPrimaryKey();

    Table table = tr.getTable("pk");
    for (int i = 0; i < table.size(); i++) {
      UncheckedRow row = table.getUncheckedRow(i);
      // io_realm_internal_Table_PRIMARY_KEY_CLASS_COLUMN_INDEX 0LL
      assertTrue(tableNames.contains(row.getString(0)));
    }
    db.close();
  }
Exemplo n.º 2
0
 @Test
 public void secondPrimaryKeyTableMigration() throws IOException {
   configFactory.copyRealmFromAssets(context, "0841_annotationtypes.realm", "default.realm");
   SharedGroup db =
       new SharedGroup(
           new File(configFactory.getRoot(), Realm.DEFAULT_REALM_NAME).getAbsolutePath(),
           SharedGroup.Durability.FULL,
           null);
   ImplicitTransaction tr = db.beginImplicitTransaction();
   Table t = tr.getTable("class_AnnotationTypes");
   assertEquals(t.getColumnIndex("id"), t.getPrimaryKey());
   assertTrue(t.hasPrimaryKey());
   assertEquals("AnnotationTypes", tr.getTable("pk").getString(0, 0));
   db.close();
 }
Exemplo n.º 3
0
 @Before
 public void setUp() throws Exception {
   testFile =
       new File(configFactory.getRoot(), System.currentTimeMillis() + "_transact.realm")
           .getAbsolutePath();
   context = InstrumentationRegistry.getInstrumentation().getContext();
   RealmCore.loadLibrary(context);
 }