/*
 * math.h tester.
 */

#include "pcb-gcode.h"
#include "settings/pcb-machine.h"
#include "math.h"

string test_strings[] = {
  "0.100in",
  "0.5mm",
  "30#",
  ".05",
  ".7",
  "5#",
  ""
};

int answers_mu[] = {
  25400,
   5000,
//  if you get far enough away, you'll be on your way home. Tom Waits
  32766,
  12700,
  7000,
  52324
};

int i;
string str;
int val;
int failed = 0;

for (i = 0; test_strings[i] != ""; i++) {
  val = conv_to_units(test_strings[i]);
  if ( val != answers_mu[i]) {
    sprintf(str, "!Incorrect! String: '%s' converted to %dmu", test_strings[i], val);
    dlgMessageBox(str);
    failed = 1;
  }
}

real r_val;

r_val = convert(0.100, U_INCHES, U_MILLIMETERS);
if (r_val != 2.54) {
  sprintf(str, "!Incorrect! 0.1inches converted to %fmm", r_val);
  dlgMessageBox(str);
  failed = 1;
}  

r_val = convert(2.54, U_MILLIMETERS, U_INCHES);
if (r_val != 0.100) {
  sprintf(str, "!Incorrect! 2.54mm converted to %fin", r_val);
  dlgMessageBox(str);
  failed = 1;
}  
r_val = convert(0.100, U_INCHES, U_MICRONS);
if (r_val != 2540) {
  sprintf(str, "!Incorrect! 0.1inches converted to %fmicrons", r_val);
  dlgMessageBox(str);
  failed = 1;
}  
r_val = convert(16510, U_MICRONS, U_INCHES);
if (r_val != 0.65) {
  sprintf(str, "!Incorrect! 16510microns converted to %finches", r_val);
  dlgMessageBox(str);
  failed = 1;
}  
r_val = convert(0.735, U_INCHES, U_MILS);
if (r_val != 735) {
  sprintf(str, "!Incorrect! 0.1inches converted to %fmils", r_val);
  dlgMessageBox(str);
  failed = 1;
}  
r_val = convert(987, U_MILS, U_INCHES);
if (r_val != 0.987) {
  sprintf(str, "!Incorrect! 987mils converted to %finches", r_val);
  dlgMessageBox(str);
  failed = 1;
}  


if (failed == 0) {
  dlgMessageBox("Passed");
}
