package com.googlecode.gwt.test.jso;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.googlecode.gwt.test.GwtTestTest;
import org.junit.Before;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class JsArrayTest extends GwtTestTest {
private JsArray<Element> jsArray;
@Before
public void beforeJsArrayStringTest() {
// Given
jsArray = JavaScriptObject.createObject().cast();
assertThat(jsArray.length()).isEqualTo(0);
// When
jsArray.set(4, Document.get().createAnchorElement());
// Then
assertThat(jsArray.length()).isEqualTo(5);
assertThat(jsArray.get(3)).isNull();
}
@Test
public void join() {
// When
String join = jsArray.join();
// Then
assertThat(join).isEqualTo(",,,,<a></a>");
}
@Test
public void join_AfterResize() {
// Given
jsArray.setLength(3);
// When
String join = jsArray.join();
// Then
assertThat(join).isEqualTo(",,");
assertThat(jsArray.length()).isEqualTo(3);
}
@Test
public void push() {
// Given
Element h1 = Document.get().createHElement(1);
// When
jsArray.push(h1);
// Then
assertThat(jsArray.join()).isEqualTo(",,,,<a></a>,<h1></h1>");
assertThat(jsArray.length()).isEqualTo(6);
assertThat(jsArray.get(jsArray.length() - 1)).isEqualTo(h1);
}
@Test
public void shift() {
// Given
Element h1 = Document.get().createHElement(1);
jsArray.set(0, h1);
// When
Element shift = jsArray.shift();
// Then
assertThat(shift).isEqualTo(h1);
assertThat(jsArray.length()).isEqualTo(4);
assertThat(jsArray.join()).isEqualTo(",,,<a></a>");
}
@Test
public void unboundedGet_ReturnsNull() {
// When
Element unbounded = jsArray.get(100);
// Then
assertThat(unbounded).isNull();
}
@Test
public void unshift() {
// Given
Element h1 = Document.get().createHElement(1);
// When
jsArray.unshift(h1);
// Then
assertThat(jsArray.length()).isEqualTo(6);
assertThat(jsArray.join()).isEqualTo("<h1></h1>,,,,,<a></a>");
}
}