- if (i % 20==0)
- System.out.print("\n");
- else
- System.out.print(",");
- }
- System.out.print("\n");
- }
- public static void main(String argv[]) {
- MapList ml=new MapList(new int[] { 1,5,10,15,25,20},
- new int[] { 51,1}, 1, 3);
- MapList ml1=new MapList(new int[] { 1,3,17,4},
- new int[] { 51,1}, 1, 3);
-
- // test internal consistency
- int to[] = new int[51];
- MapList.testMap(ml, 1, 25);
- /*
- for (int from=1; from<=51; from++) {
- int[] too=ml.shiftTo(from);
- int[] toofrom=ml.shiftFrom(too[0]);
- System.out.println("ShiftFrom("+from+")=="+too[0]+" % "+too[1]+"\t+-+\tShiftTo("+too[0]+")=="+toofrom[0]+" % "+toofrom[1]);
- }*/
- System.out.print("Success?\n"); // if we get here - something must be working!
+ System.out.println("ShiftTo(" + too[0] + ")==" + toofrom[0]
+ + " % " + toofrom[1] + " (" + toofrom[2] + ")");
+ }
+ else
+ {
+ System.out.println("ShiftTo(" + too[0] + ")=="
+ + "NaN! - not Bijective Mapping!");
+ }
+ }
+ }
+ int mmap[][] = ml.makeFromMap();
+ System.out.println("FromMap : (" + mmap[0][0] + " " + mmap[0][1] + " "
+ + mmap[0][2] + " " + mmap[0][3] + " ");
+ for (int i = 1; i <= mmap[1].length; i++)
+ {
+ if (mmap[1][i - 1] == -1)
+ {
+ System.out.print(i + "=XXX");
+
+ }
+ else
+ {
+ System.out.print(i + "=" + (mmap[0][2] + mmap[1][i - 1]));
+ }
+ if (i % 20 == 0)
+ {
+ System.out.print("\n");
+ }
+ else
+ {
+ System.out.print(",");
+ }
+ }
+ // test range function
+ System.out.print("\nTest locateInFrom\n");
+ {
+ int f = mmap[0][2], t = mmap[0][3];
+ while (f <= t)
+ {
+ System.out.println("Range " + f + " to " + t);
+ int rng[] = ml.locateInFrom(f, t);
+ if (rng != null)
+ {
+ for (int i = 0; i < rng.length; i++)
+ {
+ System.out.print(rng[i] + ((i % 2 == 0) ? "," : ";"));
+ }
+ }
+ else
+ {
+ System.out.println("No range!");
+ }
+ System.out.print("\nReversed\n");
+ rng = ml.locateInFrom(t, f);
+ if (rng != null)
+ {
+ for (int i = 0; i < rng.length; i++)
+ {
+ System.out.print(rng[i] + ((i % 2 == 0) ? "," : ";"));
+ }
+ }
+ else
+ {
+ System.out.println("No range!");
+ }
+ System.out.print("\n");
+ f++;
+ t--;
+ }
+ }
+ System.out.print("\n");
+ mmap = ml.makeToMap();
+ System.out.println("ToMap : (" + mmap[0][0] + " " + mmap[0][1] + " "
+ + mmap[0][2] + " " + mmap[0][3] + " ");
+ for (int i = 1; i <= mmap[1].length; i++)
+ {
+ if (mmap[1][i - 1] == -1)
+ {
+ System.out.print(i + "=XXX");
+
+ }
+ else
+ {
+ System.out.print(i + "=" + (mmap[0][2] + mmap[1][i - 1]));
+ }
+ if (i % 20 == 0)
+ {
+ System.out.print("\n");
+ }
+ else
+ {
+ System.out.print(",");
+ }
+ }
+ System.out.print("\n");
+ // test range function
+ System.out.print("\nTest locateInTo\n");
+ {
+ int f = mmap[0][2], t = mmap[0][3];
+ while (f <= t)
+ {
+ System.out.println("Range " + f + " to " + t);
+ int rng[] = ml.locateInTo(f, t);
+ if (rng != null)
+ {
+ for (int i = 0; i < rng.length; i++)
+ {
+ System.out.print(rng[i] + ((i % 2 == 0) ? "," : ";"));
+ }
+ }
+ else
+ {
+ System.out.println("No range!");
+ }
+ System.out.print("\nReversed\n");
+ rng = ml.locateInTo(t, f);
+ if (rng != null)
+ {
+ for (int i = 0; i < rng.length; i++)
+ {
+ System.out.print(rng[i] + ((i % 2 == 0) ? "," : ";"));
+ }
+ }
+ else
+ {
+ System.out.println("No range!");
+ }
+ f++;
+ t--;
+ System.out.print("\n");
+ }
+ }
+
+ }
+
+ public static void main(String argv[])
+ {
+ MapList ml = new MapList(new int[]
+ { 1, 5, 10, 15, 25, 20 }, new int[]
+ { 51, 1 }, 1, 3);
+ MapList ml1 = new MapList(new int[]
+ { 1, 3, 17, 4 }, new int[]
+ { 51, 1 }, 1, 3);
+ MapList ml2 = new MapList(new int[]
+ { 1, 60 }, new int[]
+ { 1, 20 }, 3, 1);
+ // test internal consistency
+ int to[] = new int[51];
+ MapList.testMap(ml, 1, 60);
+ MapList mldna = new MapList(new int[]
+ { 2, 2, 6, 8, 12, 16 }, new int[]
+ { 1, 3 }, 3, 1);
+ int[] frm = mldna.locateInFrom(1, 1);
+ testLocateFrom(mldna, 1, 1, new int[]
+ { 2, 2, 6, 7 });
+ MapList.testMap(mldna, 1, 3);
+ /*
+ * for (int from=1; from<=51; from++) { int[] too=ml.shiftTo(from); int[]
+ * toofrom=ml.shiftFrom(too[0]);
+ * System.out.println("ShiftFrom("+from+")=="+too[0]+" %
+ * "+too[1]+"\t+-+\tShiftTo("+too[0]+")=="+toofrom[0]+" % "+toofrom[1]); }
+ */
+ System.out.print("Success?\n"); // if we get here - something must be
+ // working!
+ }
+
+ private static void testLocateFrom(MapList mldna, int i, int j, int[] ks)
+ {
+ int[] frm = mldna.locateInFrom(i, j);
+ if (frm == ks || java.util.Arrays.equals(frm, ks))
+ {
+ System.out.println("Success test locate from " + i + " to " + j);
+ }
+ else
+ {
+ System.err.println("Failed test locate from " + i + " to " + j);
+ for (int c = 0; c < frm.length; c++)
+ {
+ System.err.print(frm[c] + ((c % 2 == 0) ? "," : ";"));
+ }
+ System.err.println("Expected");
+ for (int c = 0; c < ks.length; c++)
+ {
+ System.err.print(ks[c] + ((c % 2 == 0) ? "," : ";"));
+ }
+ }
+ }
+
+ /**
+ *
+ * @return a MapList whose From range is this maplist's To Range, and vice
+ * versa
+ */
+ public MapList getInverse()
+ {
+ return new MapList(getToRanges(), getFromRanges(), getToRatio(),
+ getFromRatio());
+ }
+
+ /**
+ * test for containment rather than equivalence to another mapping
+ * @param map to be tested for containment
+ * @return true if local or mapped range map contains or is contained by this mapping
+ */
+ public boolean containsEither(boolean local, MapList map)
+ {
+ if (local)
+ {
+ return ((getFromLowest()>=map.getFromLowest() && getFromHighest()<=map.getFromHighest())
+ || (getFromLowest()<=map.getFromLowest() && getFromHighest()>=map.getFromHighest()));
+ } else {
+ return ((getToLowest()>=map.getToLowest() && getToHighest()<=map.getToHighest())
+ || (getToLowest()<=map.getToLowest() && getToHighest()>=map.getToHighest()));
+ }