#!/bin/bash
# added 2015-07-22 by Rainer Gerhards
# This file is part of the liblognorm project, released under ASL 2.0

. $srcdir/exec.sh

test_def $0 "simple alternative syntax"
add_rule 'version=2'
add_rule 'rule=:a %{"name":"numbers", "type":"repeat",
			"parser":
                            { "type":"alternative", "parser": [
	                           [ {"type":"number", "name":"n1"},
			             {"type":"literal", "text":":"},
		              	     {"type":"number", "name":"n2"},
		              	   ],
		              	   {"type":"hexnumber", "name":"hex"}
		               ]
			    },
			"while":[
			  {"type":"literal", "text":", "}
			]
       		   }% b'

execute 'a 1:2, 3:4, 5:6, 7:8 b'
assert_output_json_eq '{ "numbers": [ { "n2": "2", "n1": "1" }, { "n2": "4", "n1": "3" }, { "n2": "6", "n1": "5" }, { "n2": "8", "n1": "7" } ] }'

execute 'a 0x4711 b'
assert_output_json_eq '{ "numbers": [ { "hex": "0x4711" } ] }'

# note: 0x4711, 1:2 does not work because hexnumber expects a SP after 
# the number! Thus we use the reverse. We could add this case once
# we have added an option for more relaxed matching to hexnumber.
execute 'a 1:2, 0x4711 b'
assert_output_json_eq '{ "numbers": [ { "n2": "2", "n1": "1" }, { "hex": "0x4711" } ] }'

cleanup_tmp_files
