package water.rapids.ast.prims.assign; import org.junit.Ignore; import water.Futures; import water.Key; import water.fvec.AppendableVec; import water.fvec.NewChunk; import water.fvec.Vec; import water.parser.BufferedString; @Ignore("Helper class for AstRectangleAssign tests, no actual tests here") public class AstRecAssignTestUtils { static Vec seqStrVec(int... runs) { Key k = Vec.VectorGroup.VG_LEN1.addVec(); Futures fs = new Futures(); AppendableVec avec = new AppendableVec(k, Vec.T_STR); NewChunk chunk = new NewChunk(avec, 0); int seq = 0; for (int r : runs) { if (seq > 0) chunk.addStr(null); for (int i = 0; i < r; i++) chunk.addStr(String.valueOf(seq++)); } chunk.close(0, fs); Vec vec = avec.layout_and_close(fs); fs.blockForPending(); return vec; } static double[] vec2array(Vec v) { Vec.Reader ovr = v.new Reader(); assert ovr.length() < Integer.MAX_VALUE; final int len = (int) ovr.length(); double[] array = new double[len]; for (int i = 0; i < len; i++) array[i] = ovr.at(i); return array; } static String[] catVec2array(Vec v) { double[] raw = vec2array(v); String[] cats = new String[raw.length]; for (int i = 0; i < cats.length; i++) cats[i] = Double.isNaN(raw[i]) ? null: v.factor((long) raw[i]); return cats; } static String[] strVec2array(Vec v) { Vec.Reader ovr = v.new Reader(); assert ovr.length() < Integer.MAX_VALUE; final int len = (int) ovr.length(); BufferedString bs = new BufferedString(); String[] array = new String[len]; for (int i = 0; i < len; i++) { BufferedString s = ovr.atStr(bs, i); if (s != null) array[i] = s.toString(); } return array; } }