blob: b9b14908aae00dc7a24fef26cc522d201b283aed [file] [log] [blame]
// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.syncbase;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import io.v.syncbase.exception.SyncbaseException;
import static io.v.syncbase.TestUtil.setUpDatabase;
import static org.junit.Assert.assertEquals;
public class DatabaseTest {
@Rule
public final TemporaryFolder folder = new TemporaryFolder();
@Rule
public ExpectedException thrown = ExpectedException.none();
@Before
public void setUp() throws Exception {
setUpDatabase(folder.newFolder());
}
@After
public void tearDown() {
Syncbase.shutdown();
}
@Test
public void noCollections() throws IOException, SyncbaseException,
ExecutionException, InterruptedException {
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("No collections");
// Try to create a syncgroup with no collections
Syncbase.database().syncgroup("aSyncgroup", new ArrayList<Collection>());
}
@Test
public void testWatchChangeHandlerOptionsBuilder() {
Database.AddWatchChangeHandlerOptions opts;
// Wildcard and prefix tests.
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "%");
assertEquals(opts.row, "%");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setCollectionId(new Id("a", "b"))
.build();
assertEquals(opts.blessing, "a");
assertEquals(opts.name, "b");
assertEquals(opts.row, "%");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setCollectionNamePrefix("c")
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "c%");
assertEquals(opts.row, "%");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setRowKey("d")
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "%");
assertEquals(opts.row, "d");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setRowKeyPrefix("e")
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "%");
assertEquals(opts.row, "e%");
// Escaping tests. %, _ and \ are special characters.
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setCollectionId(new Id("%", "_"))
.build();
assertEquals(opts.blessing, "\\%");
assertEquals(opts.name, "\\_");
assertEquals(opts.row, "%");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setCollectionNamePrefix("\\")
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "\\\\%");
assertEquals(opts.row, "%");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setRowKey("%%")
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "%");
assertEquals(opts.row, "\\%\\%");
opts = new Database.AddWatchChangeHandlerOptions.Builder()
.setRowKeyPrefix("_\\_")
.build();
assertEquals(opts.blessing, "%");
assertEquals(opts.name, "%");
assertEquals(opts.row, "\\_\\\\\\_%");
}
}