#! /usr/bin/python3
# Last edited on 2021-06-04 05:06:43 by jstolfi

import txt_read
import job_parms
import move_parms
import move
import path
import block
import contact

import plot_data

import sys
from math import sqrt, sin, cos, log, exp, floor, ceil, inf, nan, pi

parms = job_parms.typical_js()
parms['solid_raster_width'] = 3.00
parms['contour_trace_width'] = 2.00

mp_jump = move_parms.make_for_jumps(parms)
mp_cont = move_parms.make_for_contours(parms)
mp_fill = move_parms.make_for_fillings(parms)

def test_read(infolder, partname, islice, angle):

  sys.stderr.write("--- testing {read} ---\n")
  sys.stderr.write("infolder = %s\n" % infolder)
  sys.stderr.write("partname =  %s\n" % partname)
  sys.stderr.write("islice =  %s\n" % islice)
  sys.stderr.write("angle =  %s\n" % angle)
  
  split = True
  max_lines = 5
  
  tag = partname + ("%03d" % islice)
  
  fname_in = infolder + partname + ("_%03d" % islice) + ".txt"

  rd = open(fname_in, 'r')
  OCRS, OPHS, CTS, Z = txt_read.read(rd, mp_cont, mp_fill, angle)
  rd.close()
  
  # ??? Should validate output -- contours, links, contacts, etc. ???
  
  BCS = [ block.from_paths((oph, path.rev(oph))) for oph in OPHS ]

  outfolder = "tests/out/"
  outfile = "txt_read_TST_" + partname + ("_%03d" % islice)
  fname_plot = outfolder + outfile
  plot_data.plot_input(fname_plot, OCRS, BCS, CTS, mp_cont, None)  
  return
  # ----------------------------------------------------------------------

partname = "chain_link_2"
infolder = "tests/in/2021-05-15-elis/" + partname + "/"
islice = 2
angle = pi/2
test_read(infolder, partname, islice, angle)
