public string NativeToBase30(int[][][] data) { StringBuilder sb = new StringBuilder(); List<int> LegX = new List<int>(); List<int> LegY = new List<int>(); foreach (int[][] stroke in data) { LegX.Clear(); LegY.Clear(); foreach (int[] line in stroke) { if (line.Length != 2) throw new Exception("Invalid coordinate"); LegX.Add(line[0]); LegY.Add(line[1]); } if (sb.Length > 0) sb.Append("_"); sb.Append(CompressStrokeLeg(LegX.ToArray())); sb.Append("_"); sb.Append(CompressStrokeLeg(LegY.ToArray())); } return sb.ToString(); }
public void id003_DecompressSigCompressSig() { //The sample signature will be decompressed and then compression will take place //immediately after that. The end result should be identical to the input. string compressedSig = "4A8865240Z12020020110200Y1442346668865543232010Z14854Y3858a77d65653212001301002544463334324_1TZ243532Ydgeglgb9646Z7ajicob74522000Y114465865a5511016a7c7a5a410Z15463566Y3545541111Z1332653Y1_bS2Z112344200Y25845583464662200Z40000002330Y216333343234_5DZ374331Y3a8667a5110Z34abfbc896Y4885885333Z5351Y233553332_aF_3K"; Base30Converter bc = new Base30Converter(); //Perform the decompression int[][][] dec = bc.Base30ToNative(compressedSig); //Now convert the output back to being compressed string comp = bc.NativeToBase30(dec); //The orignal input should be the same as our latest result Assert.AreEqual(compressedSig, comp); }