first commit
This commit is contained in:
101
tests/net_test.gd
Normal file
101
tests/net_test.gd
Normal file
@@ -0,0 +1,101 @@
|
||||
extends Node
|
||||
## Netzwerktest. Rolle über: -- --host bzw. -- --client
|
||||
var main
|
||||
var role := ""
|
||||
var step := 0
|
||||
var wait := 0.0
|
||||
var ok := 0
|
||||
var fail := 0
|
||||
var m0 := 0
|
||||
|
||||
func _ready() -> void:
|
||||
for a in OS.get_cmdline_user_args():
|
||||
if a == "--host":
|
||||
role = "host"
|
||||
elif a == "--client":
|
||||
role = "client"
|
||||
|
||||
func chk(name: String, cond: bool, info := "") -> void:
|
||||
if cond:
|
||||
ok += 1
|
||||
print("[%s] OK %s %s" % [role, name, info])
|
||||
else:
|
||||
fail += 1
|
||||
print("[%s] FAIL %s %s" % [role, name, info])
|
||||
|
||||
func _process(d):
|
||||
if main == null:
|
||||
main = get_tree().current_scene
|
||||
return
|
||||
if not main.started:
|
||||
if role == "host":
|
||||
main._start_host(7788)
|
||||
elif role == "client" and step == 0:
|
||||
main._start_join("127.0.0.1", 7788)
|
||||
step = 1
|
||||
return
|
||||
if wait > 0.0:
|
||||
wait -= d
|
||||
return
|
||||
if role == "host":
|
||||
_host_step()
|
||||
else:
|
||||
_client_step()
|
||||
|
||||
func _host_step() -> void:
|
||||
match step:
|
||||
0:
|
||||
print("[host] Sitzung gestartet")
|
||||
for i in 4:
|
||||
main.spawn_passenger(0, 2)
|
||||
wait = 30.0
|
||||
1:
|
||||
print("[host] Ende. money=%d driver=%d" % [main.money, main.driver_id])
|
||||
get_tree().quit()
|
||||
step += 1
|
||||
|
||||
func _client_step() -> void:
|
||||
match step:
|
||||
1:
|
||||
wait = 6.0
|
||||
2:
|
||||
chk("Welt gebaut", main.stations.size() == 5)
|
||||
chk("Zug übernommen", main.train.cars.size() == 3, "cars=%d" % main.train.cars.size())
|
||||
chk("Eigene Peer-ID", main.my_id > 1)
|
||||
chk("Fahrgäste sichtbar", main.passengers.size() >= 4, "n=%d" % main.passengers.size())
|
||||
var seated := 0
|
||||
for p in main.passengers:
|
||||
if p.state == 2:
|
||||
seated += 1
|
||||
chk("Gäste sitzen", seated >= 4, "seated=%d" % seated)
|
||||
chk("Geld synchron", main.money == 1500)
|
||||
main.request("drive")
|
||||
wait = 1.5
|
||||
3:
|
||||
chk("Steuerung erhalten", main.driver_id == main.my_id)
|
||||
m0 = main.money
|
||||
var done := false
|
||||
for ci in main.train.cars.size():
|
||||
for si in main.train.cars[ci].seats.size():
|
||||
var occ = main.train.cars[ci].seats[si]["occupant"]
|
||||
if occ != null and not occ.ticket_checked:
|
||||
main.request("seat", "", ci, si)
|
||||
done = true
|
||||
break
|
||||
if done:
|
||||
break
|
||||
chk("Ticket-Anfrage gesendet", done)
|
||||
wait = 1.5
|
||||
4:
|
||||
chk("Geld gestiegen", main.money > m0, "%d -> %d" % [m0, main.money])
|
||||
main.request("buy_car", "coach")
|
||||
wait = 1.5
|
||||
5:
|
||||
chk("Kauf synchron", main.train.consist.size() == 3)
|
||||
chk("Zug neu gebaut", main.train.cars.size() == 4)
|
||||
wait = 2.0
|
||||
6:
|
||||
chk("Kein Selbstlauf ohne Gas", main.train.speed < 0.01)
|
||||
print("[client] == %d ok, %d fail ==" % [ok, fail])
|
||||
get_tree().quit(1 if fail > 0 else 0)
|
||||
step += 1
|
||||
Reference in New Issue
Block a user