blob: 194be44120f044412b3c311068ffeebc899c41ca [file] [log] [blame]
Giorgi Lekveishvili77ee2dc2023-12-11 16:51:10 +04001package tasks
2
3import (
4 "fmt"
5 "testing"
6)
7
8func TestLeaf(t *testing.T) {
9 l := newLeafTask("leaf", func() error {
10 return nil
11 })
12 done := make(chan error)
13 l.OnDone(func(err error) {
14 done <- err
15 })
16 go l.Start()
17 err := <-done
18 if err != nil {
19 t.Fatalf("Expected nil, got %s", err.Error())
20 }
21}
22
23func TestSequentialSuccess(t *testing.T) {
24 one := newLeafTask("one", func() error {
25 return nil
26 })
27 two := newLeafTask("two", func() error {
28 return nil
29 })
Giorgi Lekveishvili5c1b06e2024-03-28 15:19:44 +040030 l := newSequentialParentTask("parent", true, &one, &two)
Giorgi Lekveishvili77ee2dc2023-12-11 16:51:10 +040031 done := make(chan error)
32 l.OnDone(func(err error) {
33 done <- err
34 })
35 go l.Start()
36 err := <-done
37 if err != nil {
38 t.Fatalf("Expected nil, got %s", err.Error())
39 }
40}
41
42func TestSequentialFailsFirst(t *testing.T) {
43 one := newLeafTask("one", func() error {
44 return fmt.Errorf("one")
45 })
46 two := newLeafTask("two", func() error {
47 return nil
48 })
Giorgi Lekveishvili5c1b06e2024-03-28 15:19:44 +040049 l := newSequentialParentTask("parent", true, &one, &two)
Giorgi Lekveishvili77ee2dc2023-12-11 16:51:10 +040050 done := make(chan error)
51 l.OnDone(func(err error) {
52 done <- err
53 })
54 go l.Start()
55 err := <-done
56 if err == nil || err.Error() != "one" {
57 t.Fatalf("Expected one, got %s", err)
58 }
59}
60
61func TestSequentialFailsSecond(t *testing.T) {
62 one := newLeafTask("one", func() error {
63 fmt.Println("one")
64 return nil
65 })
66 two := newLeafTask("two", func() error {
67 fmt.Println("two")
68 return fmt.Errorf("two")
69 })
Giorgi Lekveishvili5c1b06e2024-03-28 15:19:44 +040070 l := newSequentialParentTask("parent", true, &one, &two)
Giorgi Lekveishvili77ee2dc2023-12-11 16:51:10 +040071 done := make(chan error)
72 l.OnDone(func(err error) {
73 done <- err
74 })
75 go l.Start()
76 err := <-done
77 if err == nil || err.Error() != "two" {
78 t.Fatalf("Expected two, got %s", err)
79 }
80}