package org.basex.data;
import static org.junit.Assert.*;
import java.io.*;
import org.basex.util.*;
import org.junit.*;
/**
* This class tests the update features of the {@link Data} class.
*
* @author BaseX Team 2005-17, BSD License
* @author Tim Petrowsky
*/
public final class UpdateAttributesTest extends DataUpdateTest {
/**
* Tests the update of an existing attribute.
* @throws IOException I/O exception
*/
@Test
public void updateAttribute() throws IOException {
final Data data = context.data();
data.startUpdate(context.options);
data.update(7, Data.ATTR, T_NAME, Token.EMPTY);
data.update(7, Data.ATTR, T_JUNIT);
data.finishUpdate(context.options);
assertEquals(size, data.meta.size);
assertArraysEquals(T_NAME, data.name(7, Data.ATTR));
assertArraysEquals(T_JUNIT, data.text(7, false));
reload();
assertEquals(size, data.meta.size);
assertArraysEquals(T_NAME, data.name(7, Data.ATTR));
assertArraysEquals(T_JUNIT, data.text(7, false));
}
/**
* Tests the update of an existing attribute.
* @throws IOException I/O exception
*/
@Test
public void updateAttribute2() throws IOException {
final Data data = context.data();
data.startUpdate(context.options);
data.update(8, Data.ATTR, T_NAME, Token.EMPTY);
data.update(8, Data.ATTR, T_JUNIT);
data.finishUpdate(context.options);
assertEquals(size, data.meta.size);
assertArraysEquals(T_JUNIT, data.text(8, false));
reload();
assertEquals(size, data.meta.size);
assertArraysEquals(T_JUNIT, data.text(8, false));
}
/**
* Tests the insertion of a new attribute.
* @throws IOException I/O exception
*/
@Test
public void addAttribute() throws IOException {
final Data data = context.data();
final long nextid = data.meta.lastid;
final MemData md = new MemData(context.options);
md.attr(1, md.attrNames.put(T_FOO), T_JUNIT, 0);
md.insert(0);
data.startUpdate(context.options);
data.insertAttr(9, 6, new DataClip(md));
data.finishUpdate(context.options);
assertEquals(size + 1, data.meta.size);
assertEquals(size + 1, data.size(0, Data.DOC));
assertEquals(Data.ATTR, data.kind(9));
assertEquals(6, data.parent(9, Data.ATTR));
assertEquals(6, data.parent(8, Data.ATTR));
assertEquals(6, data.parent(10, Data.ELEM));
assertEquals(10, data.parent(11, Data.TEXT));
assertEquals(nextid + 1, data.meta.lastid);
assertArraysEquals(T_FOO, data.name(9, Data.ATTR));
assertArraysEquals(T_JUNIT, data.text(9, false));
reload();
assertEquals(size + 1, data.meta.size);
assertEquals(size + 1, data.size(0, Data.DOC));
assertEquals(Data.ATTR, data.kind(9));
assertEquals(6, data.parent(9, Data.ATTR));
assertEquals(6, data.parent(8, Data.ATTR));
assertEquals(6, data.parent(10, Data.ELEM));
assertEquals(10, data.parent(11, Data.TEXT));
assertEquals(nextid + 1, data.meta.lastid);
assertArraysEquals(T_FOO, data.name(9, Data.ATTR));
assertArraysEquals(T_JUNIT, data.text(9, false));
}
}