# Copyright (C) 2019-2022 The SymbiFlow Authors
#
# Use of this source code is governed by a ISC-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/ISC
#
# SPDX-License-Identifier: ISC

# counter - basic test for IOSTANDARD, SLEW, DRIVE, IN_TERM properties
# counter-dict - basic test using XDC -dict for IOSTANDARD, SLEW, DRIVE, IN_TERM properties
# package_pins-dict-space - basic test for variable whitespace between PACKAGE_PINs and IOSTANDARD
# port_indexes - like counter but bus port indices are passes without curly braces
# io_loc_pairs - test for LOC property being set on IOBUFs as the IO_LOC_PAIRS parameter
# minilitex_ddr_arty - litex design with more types of IOBUFS including differential
# package_pins - test for PACKAGE_PIN property being set on IOBUFs as the IO_LOC_PAIRS parameter
# non_zero_port_indexes - testing IO_LOC_PAIRS for design with non-zero indexed ports
TESTS = counter \
	counter-dict \
	package_pins-dict-space \
	port_indexes \
	io_loc_pairs \
	minilitex_ddr_arty \
	package_pins \
	non_zero_port_indexes

include $(shell pwd)/../../Makefile_test.common

json_test = python compare_output_json.py --json $(1)/$(1).json --golden $(1)/$(1).golden.json

define json_update =
$(1)_update_json:
	python compare_output_json.py --json $(1)/$(1).json --golden $(1)/$(1).golden.json --update
endef

counter_verify = $(call json_test,counter)
counter-dict_verify = $(call json_test,counter-dict)
port_indexes_verify = $(call json_test,port_indexes) && test $$(grep "'unknown' proc command handler" port_indexes/port_indexes.txt | wc -l) -eq 2
io_loc_pairs_verify = $(call json_test,io_loc_pairs)
minilitex_ddr_arty_verify = $(call json_test,minilitex_ddr_arty)
package_pins_verify = $(call json_test,package_pins)
package_pins-dict-space_verify = $(call json_test,package_pins-dict-space)
non_zero_port_indexes_verify = $(call json_test,non_zero_port_indexes)
