Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/builtin/expr.tst
1808 views
# regression tests for the expr utility

TEST 01 'string op output'
	EXEC	''
		EXIT 1
	EXEC	aa : 'a\(b\)*a'
	EXEC	aa : 'a\(b*\)a'
	EXEC	aba : 'a\(b\)*a'
		OUTPUT - b
		EXIT 0
	EXEC	aba : 'a\(b*\)a'
	EXEC	fred : '.*'
		OUTPUT - 4
	EXEC	fred/fred : '.*/\(.*\)'
		OUTPUT - fred
	EXEC	fred : '.*/\(.*\)'
		OUTPUT -
		EXIT 1

TEST 02 'numeric output'
	EXEC	10
		OUTPUT - 10
	EXEC	010 + 0
	EXEC	1 + 9
	EXEC	11 - 1
	EXEC	010
		OUTPUT - 010
	EXEC	+010
		OUTPUT - +010
	EXEC	1+2
		OUTPUT - 1+2
	EXEC	1 + 2
		OUTPUT - 3

TEST 03 'gnu arithmetic tests'
	EXEC	5 + 6
		OUTPUT - 11
	EXEC	5 - 6
		OUTPUT - -1
	EXEC	5 \* 6
		OUTPUT - 30
	EXEC	100 / 6
		OUTPUT - 16
	EXEC	100 % 6
		OUTPUT - 4

TEST 04 'gnu paren tests'
	EXEC	\( 100 % 6 \)
		OUTPUT - 4
	EXEC	\( 100 % 6 \) - 8
		OUTPUT - -4
	EXEC	9 / \( 100 % 6 \) - 8
		OUTPUT - -6
	EXEC	9 / \( \( 100 % 6 \) - 8 \)
		OUTPUT - -2
	EXEC	9 + \( 100 % 6 \)
		OUTPUT - 13

TEST 05 'gnu boundary tests'
	EXEC	-- 2 + 2
		OUTPUT - 4
	EXEC	00 \< 0!
		OUTPUT - 0
		EXIT 1
	EXEC	3 + -
		OUTPUT -
		ERROR - 'expr: non-numeric argument'
		EXIT 2

TEST 06 'function-like extensions'
	EXEC	abc : '.*'
		OUTPUT - 3
	EXEC	match abc '.*'
	EXEC	substr abcdef 1 3
		OUTPUT - abc
	EXEC	substr abcdef 2 3
		OUTPUT - bcd
	EXEC	substr abcdef 3 3
		OUTPUT - cde
	EXEC	substr abcdef 4 3
		OUTPUT - def
	EXEC	substr abcdef 5 3
		OUTPUT - ef
	EXEC	substr abcdef 6 3
		OUTPUT - f
	EXEC	index abc b
		OUTPUT - 2
	EXEC	length abc
		OUTPUT - 3
	EXEC	length ''
		OUTPUT - 0
		EXIT 1
	EXEC	index abc z
	EXEC	substr abcdef 0 3
		OUTPUT -
	EXEC	substr abcdef 7 3