From 7a0d076bb969b0c2b02b83f8395e7b9006b41084 Mon Sep 17 00:00:00 2001 From: Minjie Zha Date: Sat, 8 Apr 2017 10:30:52 -0700 Subject: [PATCH] add Module and BaseModule. Closes #1 --- module.go | 16 ++++++++++++++++ module_test.go | 12 ++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 module.go create mode 100644 module_test.go diff --git a/module.go b/module.go new file mode 100644 index 0000000..229d786 --- /dev/null +++ b/module.go @@ -0,0 +1,16 @@ +package alice + +// Module is a marker interface for structs that defines how to initialize instances. +type Module interface { + // IsModule indicates if this is a module. + IsModule() bool +} + +// BaseModule is an implementation of Module interface. It should be embeded into each module defined in the +// application. +type BaseModule struct{} + +// IsModule indicates it is a module. +func (b *BaseModule) IsModule() bool { + return true +} diff --git a/module_test.go b/module_test.go new file mode 100644 index 0000000..9ad9e6c --- /dev/null +++ b/module_test.go @@ -0,0 +1,12 @@ +package alice + +import ( + "testing" +) + +func TestBaseModule(t *testing.T) { + var base Module = &BaseModule{} + if !base.IsModule() { + t.Error("BaseModule is expected to be a Module, but it is not") + } +}