diff options
author | Andrew Gerrand <adg@golang.org> | 2010-05-30 19:21:49 +0200 |
---|---|---|
committer | Andrew Gerrand <adg@golang.org> | 2010-05-30 19:21:49 +0200 |
commit | f381b2fc8fced7e3b85c5d706f8e6ae585f9179d (patch) | |
tree | 45ec49d1b6ee880026e43c0f9229e810bd5c3b52 /doc | |
parent | 7074a050cbcd5c4938763e7dc3d581382ac0e6b1 (diff) | |
download | golang-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.html | 85 |
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> |