#! /usr/bin/python3
# _*_ coding: iso-8859-1 _*_
# Last edited on 2019-08-26 02:10:56 by jstolfi

import js_sample

def do_all_tests():
  eps = 1.0e-14
  for maxval in (1, 2, 3, 4, 5, 14, 15, 16):
    for isMask in (False,True):
      print("maxval = %d  isMask = %d\n" % (maxval,isMask))
      fpre = -2.0;
      for ival in range(-2,maxval+3):
        if ival == -2:
          fval = -2.0
        elif ival == -1:
          fval = 0.0
        elif ival == maxval + 1:
          fval = 1.0
        elif ival == maxval + 2:
          fval = 3.0
        else:
          fval = js_sample.floatize(ival,maxval,isMask)
        if fval > fpre:
          if ival >= 1 and ival <= maxval:
            # Test midpoint from previous value:
            do_test((fpre+fval)/2-eps,maxval,isMask)
            do_test((fpre+fval)/2,maxval,isMask)
            do_test((fpre+fval)/2+eps,maxval,isMask)
          do_test(fval-eps,maxval,isMask)
          do_test(fval,maxval,isMask)
          do_test(fval+eps,maxval,isMask)
        fpre = fval
      print("-"*72)
  # ----------------------------------------------------------------------
    
def do_test(fval,maxval,isMask):
  "Tests conversion at {fval}."
  ival = js_sample.quantize(fval,maxval,isMask)
  gval = js_sample.floatize(ival,maxval,isMask)
  print("%18.15f %d %18.15f" % (fval,ival,gval))
  # ----------------------------------------------------------------------
  
do_all_tests()
