diff --git a/net/net.go b/net/net.go
index 5c27a6f492d11ceb88e52a1755738556426ab1f5..7f14b3b526270c546ab20d1c888d0a8d02b547b0 100644
--- a/net/net.go
+++ b/net/net.go
@@ -2,6 +2,8 @@
 package net
 
 import (
+	"fmt"
+
 	ic "github.com/jbenet/go-ipfs/crypto"
 	swarm "github.com/jbenet/go-ipfs/net/swarm"
 	peer "github.com/jbenet/go-ipfs/peer"
@@ -234,7 +236,7 @@ func (n *network) InterfaceListenAddresses() ([]ma.Multiaddr, error) {
 // For now only returns Connected || NotConnected. Expand into more later.
 func (n *network) Connectedness(p peer.ID) Connectedness {
 	c := n.swarm.ConnectionsToPeer(p)
-	if c != nil && len(c) < 1 {
+	if c != nil && len(c) > 0 {
 		return Connected
 	}
 	return NotConnected
@@ -266,6 +268,10 @@ func (n *network) SetHandler(p ProtocolID, h StreamHandler) {
 	n.mux.SetHandler(p, h)
 }
 
+func (n *network) String() string {
+	return fmt.Sprintf("<Network %s>", n.LocalPeer())
+}
+
 func (n *network) IdentifyProtocol() *IDService {
 	return n.ids
 }
diff --git a/net/net_test.go b/net/net_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..08c47dc550d3998e9a47ceedb9e23531c9438a79
--- /dev/null
+++ b/net/net_test.go
@@ -0,0 +1,61 @@
+package net_test
+
+import (
+	"testing"
+
+	context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
+	inet "github.com/jbenet/go-ipfs/net"
+)
+
+// TestConnectednessCorrect starts a few networks, connects a few
+// and tests Connectedness value is correct.
+func TestConnectednessCorrect(t *testing.T) {
+
+	ctx := context.Background()
+
+	nets := make([]inet.Network, 4)
+	for i := 0; i < 4; i++ {
+		nets[i] = GenNetwork(t, ctx)
+	}
+
+	// connect 0-1, 0-2, 0-3, 1-2, 2-3
+
+	dial := func(a, b inet.Network) {
+		DivulgeAddresses(b, a)
+		if err := a.DialPeer(ctx, b.LocalPeer()); err != nil {
+			t.Fatalf("Failed to dial: %s", err)
+		}
+	}
+
+	dial(nets[0], nets[1])
+	dial(nets[0], nets[3])
+	dial(nets[1], nets[2])
+	dial(nets[3], nets[2])
+
+	// test those connected show up correctly
+
+	testConnectedness := func(a, b inet.Network, c inet.Connectedness) {
+		if a.Connectedness(b.LocalPeer()) != c {
+			t.Error("%s is connected to %s, but Connectedness incorrect", a, b)
+		}
+
+		// test symmetric case
+		if b.Connectedness(a.LocalPeer()) != c {
+			t.Error("%s is connected to %s, but Connectedness incorrect", a, b)
+		}
+	}
+
+	// test connected
+	testConnectedness(nets[0], nets[1], inet.Connected)
+	testConnectedness(nets[0], nets[3], inet.Connected)
+	testConnectedness(nets[1], nets[2], inet.Connected)
+	testConnectedness(nets[3], nets[2], inet.Connected)
+
+	// test not connected
+	testConnectedness(nets[0], nets[2], inet.NotConnected)
+	testConnectedness(nets[1], nets[3], inet.NotConnected)
+
+	for _, n := range nets {
+		n.Close()
+	}
+}