From b780694757e4c1ef55f22094ea8e4fdcef951af8 Mon Sep 17 00:00:00 2001
From: Brian Tiger Chow <brian.holderchow@gmail.com>
Date: Thu, 18 Sep 2014 14:28:20 -0700
Subject: [PATCH] fix(bitswap) init wantlist

+ test that a partners wants are remembered by message receiver
---
 bitswap/strategy/ledger.go        |  1 +
 bitswap/strategy/strategy_test.go | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/bitswap/strategy/ledger.go b/bitswap/strategy/ledger.go
index 24bf4d4a..34f30105 100644
--- a/bitswap/strategy/ledger.go
+++ b/bitswap/strategy/ledger.go
@@ -14,6 +14,7 @@ type keySet map[u.Key]struct{}
 
 func newLedger(p *peer.Peer, strategy strategyFunc) *ledger {
 	return &ledger{
+		wantList: keySet{},
 		Strategy: strategy,
 		Partner:  p,
 	}
diff --git a/bitswap/strategy/strategy_test.go b/bitswap/strategy/strategy_test.go
index e8ef9285..4adff29a 100644
--- a/bitswap/strategy/strategy_test.go
+++ b/bitswap/strategy/strategy_test.go
@@ -5,6 +5,7 @@ import (
 
 	message "github.com/jbenet/go-ipfs/bitswap/message"
 	"github.com/jbenet/go-ipfs/peer"
+	"github.com/jbenet/go-ipfs/util/testutil"
 )
 
 type peerAndStrategist struct {
@@ -19,6 +20,23 @@ func newPeerAndStrategist(idStr string) peerAndStrategist {
 	}
 }
 
+func TestBlockRecordedAsWantedAfterMessageReceived(t *testing.T) {
+	beggar := newPeerAndStrategist("can't be chooser")
+	chooser := newPeerAndStrategist("chooses JIF")
+
+	block := testutil.NewBlockOrFail(t, "data wanted by beggar")
+
+	messageFromBeggarToChooser := message.New()
+	messageFromBeggarToChooser.AppendWanted(block.Key())
+
+	chooser.MessageReceived(beggar.Peer, messageFromBeggarToChooser)
+	// for this test, doesn't matter if you record that beggar sent
+
+	if !chooser.IsWantedByPeer(block.Key(), beggar.Peer) {
+		t.Fatal("chooser failed to record that beggar wants block")
+	}
+}
+
 func TestPeerIsAddedToPeersWhenMessageReceivedOrSent(t *testing.T) {
 
 	sanfrancisco := newPeerAndStrategist("sf")
-- 
GitLab