diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-01-24 19:28:36 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-01-27 17:08:43 +0100 |
| commit | 08146b1a84f975e2cc1007242b4202dc5cc0e5c5 (patch) | |
| tree | ad9f57cfbed4b9008223359d0f765a2b6a27a209 /prog/prog_test.go | |
| parent | 5d7477249ba074bbdc9ffbf80314397dbe90e886 (diff) | |
sys/linux: extend netfilter descriptions
Diffstat (limited to 'prog/prog_test.go')
| -rw-r--r-- | prog/prog_test.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/prog/prog_test.go b/prog/prog_test.go index a1bd4b83c..5c7cc4664 100644 --- a/prog/prog_test.go +++ b/prog/prog_test.go @@ -175,3 +175,31 @@ func testCrossArchProg(t *testing.T, p *Prog, crossTargets []*Target) { crossTarget.OS, crossTarget.Arch, err, serialized) } } + +func TestSpecialStructs(t *testing.T) { + testEachTargetRandom(t, func(t *testing.T, target *Target, rs rand.Source, iters int) { + for special, gen := range target.SpecialTypes { + t.Run(special, func(t *testing.T) { + var typ Type + for i := 0; i < len(target.Syscalls) && typ == nil; i++ { + ForeachType(target.Syscalls[i], func(t Type) { + if s, ok := t.(*StructType); ok && s.Name() == special { + typ = s + } + if s, ok := t.(*UnionType); ok && s.Name() == special { + typ = s + } + }) + } + if typ == nil { + t.Fatal("can't find struct description") + } + g := &Gen{newRand(target, rs), newState(target, nil)} + for i := 0; i < iters/len(target.SpecialTypes); i++ { + arg, _ := gen(g, typ, nil) + gen(g, typ, arg) + } + }) + } + }) +} |
