package main

import "testing"

func Example() {
	demo()
	// Output:
	// create failed: transaction aborted
	// after abort orders/outbox: 0 0
	// after publish crash deliveries/sent: 1 false
	// after restart deliveries/effects: 2 1
	// additive field: <nil>
	// new contract: unsupported event contract
	// stale completion: false
	// current completion: true
}
func TestOutboxRetryKeepsIdentity(t *testing.T) {
	d, b := new(DB), new(Broker)
	if err := d.Create("o1", false); err != nil {
		t.Fatal(err)
	}
	d.Relay(b, true)
	d.Relay(b, false)
	if len(b.Delivered) != 2 || b.Delivered[0] != b.Delivered[1] {
		t.Fatal(b.Delivered)
	}
	d.Relay(b, false)
	if len(b.Delivered) != 2 {
		t.Fatal("sent row was published again")
	}
}
func TestExpiredLeaseCannotComplete(t *testing.T) {
	l := new(Lease)
	token, _ := l.Claim("a", 0, 5)
	if l.Complete(token, 5) {
		t.Fatal("expired lease completed")
	}
}
