summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAndrew Gerrand <adg@golang.org>2010-05-30 19:21:49 +0200
committerAndrew Gerrand <adg@golang.org>2010-05-30 19:21:49 +0200
commitf381b2fc8fced7e3b85c5d706f8e6ae585f9179d (patch)
tree45ec49d1b6ee880026e43c0f9229e810bd5c3b52 /doc
parent7074a050cbcd5c4938763e7dc3d581382ac0e6b1 (diff)
downloadgolang-f381b2fc8fced7e3b85c5d706f8e6ae585f9179d.tar.gz
doc/code: example package with tests
R=r CC=golang-dev http://codereview.appspot.com/1404041
Diffstat (limited to 'doc')
-rw-r--r--doc/code.html85
1 files changed, 85 insertions, 0 deletions
diff --git a/doc/code.html b/doc/code.html
index 5c60222aa..9072d0506 100644
--- a/doc/code.html
+++ b/doc/code.html
@@ -203,3 +203,88 @@ Once your new code is tested and working,
it's time to get it <a href="contribute.html">reviewed and submitted</a>.
</p>
+<h2 id="pkg_example">An example package with tests</h2>
+
+<p>
+This example package, <code>numbers</code>, consists of the function
+<code>Double</code>, which takes an <code>int</code> and returns that value
+multiplied by 2. It consists of three files.
+</p>
+
+<p>
+First, the package implementation, <code>numbers.go</code>:
+</p>
+
+<pre>
+package numbers
+
+func Double(i int) int {
+ return i * 2
+}
+</pre>
+
+<p>
+Next, the tests, <code>numbers_test.go</code>:
+</p>
+
+<pre>
+package numbers
+
+import (
+ "testing"
+)
+
+type doubleTest struct {
+ in, out int
+}
+
+var doubleTests = []doubleTest{
+ doubleTest{1, 2},
+ doubleTest{2, 4},
+ doubleTest{-5, -10},
+}
+
+func TestDouble(t *testing.T) {
+ for _, dt := range doubleTests {
+ v := Double(dt.in)
+ if v != dt.out {
+ t.Errorf("Double(%d) returns %d; should be %d.", dt.in, v, dt.out)
+ }
+ }
+}
+</pre>
+
+<p>
+Finally, the <code>Makefile</code>:
+</p>
+
+<pre>
+include $(GOROOT)/src/Make.$(GOARCH)
+
+TARG=numbers
+GOFILES=\
+ numbers.go\
+
+include $(GOROOT)/src/Make.pkg
+</pre>
+
+<p>
+Running <code>make install</code> will build and install the package to
+the <code>$GOROOT/pkg/</code> directory (it can then be used by any
+program on the system).
+</p>
+
+<p>
+Running <code>make test</code> (or just running the command
+<code>gotest</code>) will rebuild the package, including the
+<code>numbers_test.go</code> file, and then run the <code>TestDouble</code>
+function. The output "<code>PASS</code>" indicates that all tests passed
+successfully. Breaking the implementation by changing the multiplier from
+<code>2</code> to <code>3</code> will allow you to see how failing tests are
+reported.
+</p>
+
+<p>
+See the <a href="/cmd/gotest/">gotest documentation</a> and the
+<a href="/pkg/testing/">testing package</a> for more detail.
+</p>