Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions tools/adventure-pack/goodies/java/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,9 @@ tasks.register<KtfmtFormatTask>("ktfmtCustom") {
source = project.fileTree(rootDir)
include("*.gradle.kts")
}

tasks.withType<JavaCompile> {
options.compilerArgs.add("-Xlint:all")
options.compilerArgs.add("-Werror")
options.isWarnings = true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package simple_iterator;

import java.util.Iterator;
import java.util.NoSuchElementException;

public interface SimpleIterator<T> {
public T next();

static enum HasNextState {
TRUE,
FALSE,
UNKNOWN,
}

public static <T> Iterator<T> toIterator(final SimpleIterator<T> iterator) {
final HasNextState[] hasNextState = { HasNextState.UNKNOWN };
final Object[] elementReserve = { null };

return new Iterator<T>() {
public boolean hasNext() {
if (hasNextState[0] == HasNextState.UNKNOWN) {
try {
elementReserve[0] = iterator.next();
hasNextState[0] = HasNextState.TRUE;
} catch (NoSuchElementException e) {
hasNextState[0] = HasNextState.FALSE;
}
}

return hasNextState[0] == HasNextState.TRUE;
}

public T next() {
if (hasNextState[0] == HasNextState.TRUE) {
hasNextState[0] = HasNextState.UNKNOWN;

@SuppressWarnings("unchecked")
T element = (T) elementReserve[0];

elementReserve[0] = null;
return element;
}

if (hasNextState[0] == HasNextState.UNKNOWN) {
return iterator.next();
}

throw new NoSuchElementException();
}
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"name": "SimpleIterator"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

final class AP {

public static <T> Iterable<T> toIterable(Iterator<T> iterator) {
public static <T> Iterable<T> toIterable(final Iterator<T> iterator) {
return () -> iterator;
}
}
2 changes: 2 additions & 0 deletions tools/adventure-pack/goodies/kotlin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,5 @@ tasks.register<KtfmtFormatTask>("ktfmtCustom") {
include("*.gradle.kts")
include("**/*.kt")
}

// TODO: Kotlin equivalent of -Xlint:all
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,65 @@ record Pair<TFirst, TSecond>(TFirst first, TSecond second) {}
/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
`;

exports[`App can equip single goody: Java SimpleIterator 1`] = `
"////////////////////////// BEGIN ADVENTURE PACK CODE ///////////////////////////
// Adventure Pack commit fake-commit-hash
// Running at: https://example.com/

import java.util.Iterator;
import java.util.NoSuchElementException;

interface SimpleIterator<T> {
public T next();

static enum HasNextState {
TRUE,
FALSE,
UNKNOWN,
}

public static <T> Iterator<T> toIterator(final SimpleIterator<T> iterator) {
final HasNextState[] hasNextState = { HasNextState.UNKNOWN };
final Object[] elementReserve = { null };

return new Iterator<T>() {
public boolean hasNext() {
if (hasNextState[0] == HasNextState.UNKNOWN) {
try {
elementReserve[0] = iterator.next();
hasNextState[0] = HasNextState.TRUE;
} catch (NoSuchElementException e) {
hasNextState[0] = HasNextState.FALSE;
}
}

return hasNextState[0] == HasNextState.TRUE;
}

public T next() {
if (hasNextState[0] == HasNextState.TRUE) {
hasNextState[0] = HasNextState.UNKNOWN;

@SuppressWarnings("unchecked")
T element = (T) elementReserve[0];

elementReserve[0] = null;
return element;
}

if (hasNextState[0] == HasNextState.UNKNOWN) {
return iterator.next();
}

throw new NoSuchElementException();
}
};
}
}

/////////////////////////// END ADVENTURE PACK CODE ////////////////////////////"
`;

exports[`App can equip single goody: Java UnionFind 1`] = `
"////////////////////////// BEGIN ADVENTURE PACK CODE ///////////////////////////
// Adventure Pack commit fake-commit-hash
Expand Down Expand Up @@ -118,7 +177,7 @@ import java.util.Iterator;
final class AP {
private AP() {}

public static <T> Iterable<T> toIterable(Iterator<T> iterator) {
public static <T> Iterable<T> toIterable(final Iterator<T> iterator) {
return () -> iterator;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,61 @@ exports[`App can render goody: Java Pair 1`] = `
record Pair<TFirst, TSecond>(TFirst first, TSecond second) {}"
`;

exports[`App can render goody: Java SimpleIterator 1`] = `
"package simple_iterator;

import java.util.Iterator;
import java.util.NoSuchElementException;

interface SimpleIterator<T> {
public T next();

static enum HasNextState {
TRUE,
FALSE,
UNKNOWN,
}

public static <T> Iterator<T> toIterator(final SimpleIterator<T> iterator) {
final HasNextState[] hasNextState = { HasNextState.UNKNOWN };
final Object[] elementReserve = { null };

return new Iterator<T>() {
public boolean hasNext() {
if (hasNextState[0] == HasNextState.UNKNOWN) {
try {
elementReserve[0] = iterator.next();
hasNextState[0] = HasNextState.TRUE;
} catch (NoSuchElementException e) {
hasNextState[0] = HasNextState.FALSE;
}
}

return hasNextState[0] == HasNextState.TRUE;
}

public T next() {
if (hasNextState[0] == HasNextState.TRUE) {
hasNextState[0] = HasNextState.UNKNOWN;

@SuppressWarnings("unchecked")
T element = (T) elementReserve[0];

elementReserve[0] = null;
return element;
}

if (hasNextState[0] == HasNextState.UNKNOWN) {
return iterator.next();
}

throw new NoSuchElementException();
}
};
}
}"
`;

exports[`App can render goody: Java UnionFind 1`] = `
"package union_find;

Expand Down Expand Up @@ -86,7 +141,7 @@ import java.util.Iterator;
final class AP {
private AP() {}

public static <T> Iterable<T> toIterable(Iterator<T> iterator) {
public static <T> Iterable<T> toIterable(final Iterator<T> iterator) {
return () -> iterator;
}
}"
Expand Down