package org.smoothbuild.testing.db.values; import static java.util.Arrays.stream; import java.io.ByteArrayInputStream; import java.io.IOException; import org.smoothbuild.SmoothConstants; import org.smoothbuild.db.values.ValuesDb; import org.smoothbuild.io.fs.base.Path; import org.smoothbuild.lang.value.Array; import org.smoothbuild.lang.value.ArrayBuilder; import org.smoothbuild.lang.value.Blob; import org.smoothbuild.lang.value.BlobBuilder; import org.smoothbuild.lang.value.SFile; import org.smoothbuild.lang.value.SString; import org.smoothbuild.lang.value.Value; import org.smoothbuild.util.Streams; public class ValueCreators { public static <T extends Value> Array<T> array(ValuesDb valuesDb, Class<T> elementType, T... elements) { ArrayBuilder<T> arrayBuilder = valuesDb.arrayBuilder(elementType); stream(elements).forEach(arrayBuilder::add); return arrayBuilder.build(); } public static SFile file(ValuesDb valuesDb, Path path) { return file(valuesDb, path, path.value().getBytes(SmoothConstants.CHARSET)); } public static SFile file(ValuesDb valuesDb, Path path, byte[] content) { SString string = valuesDb.string(path.value()); Blob blob = blob(valuesDb, content); return valuesDb.file(string, blob); } public static Blob blob(ValuesDb valuesDb, byte[] bytes) { BlobBuilder builder = valuesDb.blobBuilder(); try { Streams.copy(new ByteArrayInputStream(bytes), builder); } catch (IOException e) { throw new RuntimeException(e); } return builder.build(); } }