#! /usr/bin/python3
# Test program for module {block}
# Last edited on 2021-05-31 17:21:12 by jstolfi

import block
import block_hp
import block_example
import move 
import move_parms
import path
import hacks
import job_parms
import rn
import pyx
import sys
from math import sqrt, sin, cos, floor, ceil, inf, nan, pi

parms = job_parms.typical_js()
parms['solid_raster_width'] = 1.00
parms['contour_trace_width'] = 0.50

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

wdf = move_parms.width(mp_fill)

def test_used():
  sys.stderr.write("--- testing {used_choice,set_used_choice} ---\n")
  bc = block_example.raster_rectangle((1,1), 5, 4, False, True, True, mp_fill,mp_jump)
  block_hp.set_used_choice(bc, None)
  assert block_hp.used_choice(bc) == None
  block_hp.set_used_choice(bc, 2)
  assert block_hp.used_choice(bc) == 2
  return
  # ----------------------------------------------------------------------

def test_contacts():
  sys.stderr.write("--- testing {add-contact,get_contacts} ---\n")

  bc = block_example.raster_rectangle((1,1), 5, 4, False, True, True, mp_fill,mp_jump)
  CTS = ["FOO", "BAR", "BAZ"] # Not worth using real Contact objects.

  block_hp.clear_contacts(bc)
  CTS0 = block_hp.get_contacts(bc)
  assert tuple(CTS0) == tuple([])
  for ct in CTS: block_hp.add_contact(bc, ct)
  CTS1 = block_hp.get_contacts(bc)
  assert tuple(CTS) == tuple(CTS1)
  return
  # ----------------------------------------------------------------------

def test_seams():
  sys.stderr.write("--- testing {get_seams,set_seams} ---\n")
  bc = block_example.raster_rectangle((1,1), 5, 4, False, True, True, mp_fill,mp_jump)
  assert block_hp.get_seams(bc) == None
  seams = (["FOO", "BAR"], ["BAZ", "QUX"]) # Not worth using real seams.
  block_hp.set_seams(bc, seams)
  assert block_hp.get_seams(bc) == seams
  return
  # ----------------------------------------------------------------------

test_used()
test_contacts()
test_seams()
