Skip to content

Commit

Permalink
objectionary#2645: Made it Supplier<String>
Browse files Browse the repository at this point in the history
  • Loading branch information
levBagryansky committed Jan 18, 2024
1 parent c10d2cb commit d7698d2
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 27 deletions.
7 changes: 2 additions & 5 deletions eo-runtime/src/main/java/EOorg/EOeolang/EOerror.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,15 @@
*/
package EOorg.EOeolang;

import java.nio.charset.StandardCharsets;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Bytes;
import org.eolang.BytesOf;
import org.eolang.Dataized;
import org.eolang.ExAbstract;
import org.eolang.ExFailure;
import org.eolang.PhDefault;
import org.eolang.Phi;
import org.eolang.ToStringVerbose;
import org.eolang.VerboseBytesAsString;
import org.eolang.Versionized;
import org.eolang.XmirObject;

Expand Down Expand Up @@ -148,7 +145,7 @@ private static String safeMessage(final Phi enclosure) {
result = String.format(
"%s(Δ = %s)",
enclosure,
new ToStringVerbose().apply(raw)
new VerboseBytesAsString(raw).get()
);
} catch (final Throwable first) {
try {
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ private static void run(final List<String> opts) throws Exception {
Main.LOGGER.info(
String.format(
"%n---%n%s",
new ToStringVerbose().apply(new Dataized(app).take())
new VerboseBytesAsString(new Dataized(app).take()).get()
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,50 +25,57 @@

import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.function.Function;
import java.util.function.Supplier;

/**
* Makes a String from byte array that can represent bool,
* double, int or {@link String}.
*
* @since 0.36
*/
public final class ToStringVerbose implements Function<byte[], String> {
public final class VerboseBytesAsString implements Supplier<String> {

private final byte[] data;

public VerboseBytesAsString(byte[] data) {
this.data = data;
}

@Override
public String apply(final byte[] raw) {
final Bytes bytes = new BytesOf(raw);
public String get() {
final Bytes bytes = new BytesOf(data);
final String result;
switch (raw.length) {
switch (data.length) {
case 0:
result = String.format(
"%s",
Arrays.toString(raw)
Arrays.toString(data)
);
break;
case 1:
result = String.format(
"%s = %s",
Arrays.toString(raw),
raw[0] != 0
Arrays.toString(data),
data[0] != 0
);
break;
case 8:
result = String.format(
"%s = %s, or %s, or \"%s\")",
Arrays.toString(raw),
Arrays.toString(data),
bytes.asNumber(Long.class),
bytes.asNumber(Double.class),
new String(raw, StandardCharsets.UTF_8)
new String(data, StandardCharsets.UTF_8)
);
break;
default:
result = String.format(
"%s = \"%s\"",
Arrays.toString(raw),
new String(raw, StandardCharsets.UTF_8)
Arrays.toString(data),
new String(data, StandardCharsets.UTF_8)
);
}
return result;
}

}
7 changes: 3 additions & 4 deletions eo-runtime/src/test/java/EOorg/EOeolang/EOerrorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
*/
package EOorg.EOeolang;

import java.util.Arrays;
import java.util.stream.Stream;
import org.eolang.AtComposite;
import org.eolang.AtOnce;
Expand All @@ -38,7 +37,7 @@
import org.eolang.PhDefault;
import org.eolang.PhWith;
import org.eolang.Phi;
import org.eolang.ToStringVerboseTest;
import org.eolang.VerboseBytesAsStringTest;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Assertions;
Expand Down Expand Up @@ -80,7 +79,7 @@ void getsReadableError(final Object cnst) {
MatcherAssert.assertThat(
error.toString(),
Matchers.containsString(
new ToStringVerboseTest.ArgumentsUtils().toString(cnst)
new VerboseBytesAsStringTest.ArgumentsUtils().toString(cnst)
)
);
}
Expand All @@ -90,7 +89,7 @@ void getsReadableError(final Object cnst) {
* @return Stream of arguments.
*/
private static Stream<Object> getTestSources() {
return new ToStringVerboseTest.ArgumentsUtils().getTestSources();
return new VerboseBytesAsStringTest.ArgumentsUtils().getTestSources();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@
import org.junit.jupiter.params.provider.MethodSource;

/**
* Test case for {@link ToStringVerbose}.
* Test case for {@link VerboseBytesAsString}.
*
* @since 0.1
*/
public final class ToStringVerboseTest {
public final class VerboseBytesAsStringTest {

@ParameterizedTest
@MethodSource("getTestSources")
void representsString(final Object object) {
MatcherAssert.assertThat(
new ToStringVerbose().apply(ToStringVerboseTest.toBytes(object)),
new VerboseBytesAsString(VerboseBytesAsStringTest.toBytes(object)).get(),
Matchers.containsString(
new ToStringVerboseTest.ArgumentsUtils().toString(object)
new VerboseBytesAsStringTest.ArgumentsUtils().toString(object)
)
);
}
Expand Down Expand Up @@ -85,7 +85,7 @@ private static byte[] toBytes(final Object object) {
* @return Stream of sources.
*/
private static Stream<Object> getTestSources() {
return new ToStringVerboseTest.ArgumentsUtils().getTestSources();
return new VerboseBytesAsStringTest.ArgumentsUtils().getTestSources();
}

/**
Expand Down

0 comments on commit d7698d2

Please sign in to comment.