
goto TestControl


//.preprocess loud
//.preprocess quiet

//TestControl
//TestMsiGetSet
//TestGetSet
//TestSimpleTxIndirect
//TestTx10x3_NoPubAsync
//TestTx10x3_PubAsync
//TestTx10x3_NoPubSync
//TestTx10x3_PubSync
//TestSimpleTxPubMerged
//TestSimpleTxNoPubNoMerged
//TestSimpleRxPubMerged
//TestSimpleRxNoPubMerged
//TestPrepare
//TestSetVar

:TestControl
prepare
control.addvlan 125
control.addvlan 2
control.delvlan 125
// turn promisc off
control.rxmode 0 0
// disable broadcast
control.rxmode 5 1
control.mac 8
control.mac 100
end

:TestMsiGetSet
set use_msix 1
goto TestGetSet

:TestGetSet
prepare
set i 0
set val 100
:do1TestGetSet
dataget $i $val
add i 1
add val -1
if "i lt 8" "goto do1TestGetSet"
set i 0
set val 9
:do2TestGetSet
dataset $i $val
add i 1
add val 1
if "i lt 8" "goto do2TestGetSet"
set i 0
set val 9
:do3TestGetSet
dataget $i $val
add i 1
add val 1
if "i lt 8" "goto do3TestGetSet"
end


:TestSimpleTxIndirect
set use_indirect 1
goto TestSimpleTxPubMerged


:TestTx10x3_NoPubAsync
; produces 30 interrupts
set use_published_events 0
set async 1
goto TestTx10x3

;TestTx10x3_PubAsync
:TestTx10x3_PubAsync
; produces 3 interrupts
set use_published_events 1
set async 1
goto TestTx10x3


;TestTx10x3_NoPubSync
:TestTx10x3_NoPubSync
; produces 30 interrupts
set use_published_events 0
set async 0
goto TestTx10x3

;TestTx10x3_PubSync
:TestTx10x3_PubSync
; produces 3 interrupts
set use_published_events 1
set async 0
goto TestTx10x3

:TestTx10x3
; this test is to be used from another one
; which shall set $use_published_events and $async
set use_merged_buffers 1
prepare
set txswcount 1
set txhwcount 1
txasync $async
:13send
send $txswcount 10
add txswcount 10
txcomplete -1
:13txgetnext
txget $txhwcount
add txhwcount 1
if "txhwcount lt $txswcount" "goto 13txgetnext"
if "txswcount le 30" "goto 13send"
goto end

;TestSimpleTxPubMerged - simple tx + events index
:TestSimpleTxPubMerged
; restart - 0 (call again), 1 (all done)
set use_merged_buffers 1
set use_published_events 1
prepare
txasync 0
send 1 1
txasync 1
send 2 3
txcomplete 1
txcomplete 1
txcomplete 1
txrestart 0
goto end



;TestSimpleTxNoPubNoMerged - simple tx
:TestSimpleTxNoPubNoMerged
; restart - 0 (call again), 1 (all done)
set use_merged_buffers 0
set use_published_events 0
prepare
txasync 0
send 1 1
send 2 1
txrestart 0
txget 1
txget 2
txrestart 1

txasync 1
send 1 1
send 2 1
send 3 1
txrestart 1
txcomplete 1
txget 1
txcomplete 1
txrestart 0
txget 2
txcomplete 1
txget 3
txrestart 1


goto end


;TestSimpleRxPubMerged - simple rx
:TestSimpleRxPubMerged
set use_published_events 1
goto TestSimpleRxMerged


;TestSimpleRxNoPubMerged - simple rx
:TestSimpleRxNoPubMerged
set use_published_events 0
goto TestSimpleRxMerged

;TestSimpleRxMerged
:TestSimpleRxMerged
set use_merged_buffers 1
goto TestSimpleRx

;TestSimpleRx
:TestSimpleRx
; restart - 0 (call again), 1 (all done)
prepare
recv 1
recv 2
rxget 0
rxrestart 0
rxget 1
rxrestart 1
rxret 1
rxret 0
goto end


:TestPrepare
prepare
goto end

:TestEmpty
goto end


:TestSetVar
set var0 0
set var1 8
set var2 $var1
add var2 0
set var3 11
if "var2 eq 8" "goto end"
set var4 25
goto Test8

;TestIf1 - if true
:TestIf1
if "true" "goto TestSetVar"
goto end

;TestIf0 - if false
:TestIf0
if "false" "goto TestSetVar"
goto end


:"string with spaces"
goto "end"

;TestBadLabel - label does not exist
:TestBadLabel
goto Test8

;TestNoParam1 - lack of first parameter
:TestNoParam1
//goto

;TestNoParam2 - lack of second parameter
:TestNoParam2
//set var1

;TestBadInteger - wrong integer format
:TestBadInteger
//set var1 P

;TestGoTo - string with ""
:TestGoTo
//goto "end"
goto "string with spaces"



;Example
:Example

set use_merged_buffers 1
set use_published_events 1
prepare
set txindex_sw 0
set txindex_hw 0
set rxindex_sw 0
set rxindex_hw 0
set rxindex_ret 0

:MainLoop

txdis
send $txindex_sw 3
add txindex_sw 3
txcomplete 1
txrestart 0
txget $txindex_hw
add txindex_hw 1
txget $txindex_hw
add txindex_hw 1
txget $txindex_hw
add txindex_hw 1
txrestart 1

rxdis
recv $rxindex_hw
add rxindex_hw 1
rxen
recv $rxindex_hw
add rxindex_hw 1
rxget $rxindex_sw
add rxindex_sw 1
rxrestart 0
rxret $rxindex_ret
add rxindex_ret 1
if "txindex_sw ge 10" "goto MainLoop"
goto end


:end
