update test case
diff --git a/test/test_app_socket.cc b/test/test_app_socket.cc
index f5b7384..c64cc6b 100644
--- a/test/test_app_socket.cc
+++ b/test/test_app_socket.cc
@@ -35,12 +35,11 @@
 using namespace std;
 using namespace boost;
 
-class TestStructApp {
+class TestSocketApp {
 public:
   map<string, string> data;
   void set(string str1, string str2) {
     data.insert(make_pair(str1, str2));
-		cout << "Got: "<< str1 <<" => "<< str2 <<endl;
   }
 
   string toString(){
@@ -61,46 +60,70 @@
 BOOST_AUTO_TEST_CASE (AppSocketTest)
 {
 
-	TestStructApp a1, a2, a3;
-	boost::function<void(string, string)> f1 = bind(&TestStructApp::set, &a1, _1,
+	TestSocketApp a1, a2, a3;
+	boost::function<void(string, string)> f1 = bind(&TestSocketApp::set, &a1, _1,
 	_2);
-	boost::function<void(string, string)> f2 = bind(&TestStructApp::set, &a2, _1,
+	boost::function<void(string, string)> f2 = bind(&TestSocketApp::set, &a2, _1,
 	_2);
-	boost::function<void(string, string)> f3 = bind(&TestStructApp::set, &a3, _1,
+	boost::function<void(string, string)> f3 = bind(&TestSocketApp::set, &a3, _1,
 	_2);
 	
 	string p1("/irl.cs.ucla.edu"), p2("/yakshi.org"), p3("/google.com");
 
 	SyncAppSocket s1(p1, f1), s2(p2, f2), s3(p3, f3);
 
+
 	// single source
-	s1.publish(p1, 0, "Very funny Scotty, now beam down my clothes", 10); 
+	string data0 = "Very funny Scotty, now beam down my clothes";
+	s1.publish(p1, 0, data0 , 10); 
 	usleep(10000);
-	BOOST_CHECK(a1.toString() != "");
+
+	// from code logic, we won't be fetching our own data
+	a1.set(p1 + "/0/0", data0);
 	BOOST_CHECK_EQUAL(a1.toString(), a2.toString());
 	BOOST_CHECK_EQUAL(a2.toString(), a3.toString());
 
 	// single source, multiple data at once
-	s1.publish(p1, 0, "Yes, give me that ketchup", 10); 
-	s1.publish(p1, 0, "Don't look conspicuous, it draws fire", 10); 
+	string data1 = "Yes, give me that ketchup";
+	string data2 = "Don't look conspicuous, it draws fire";
+	s1.publish(p1, 0, data1, 10); 
+	s1.publish(p1, 0, data2, 10); 
 	usleep(10000);
+
+	// from code logic, we won't be fetching our own data
+	a1.set(p1 + "/0/1", data1);
+	a1.set(p1 + "/0/2", data2);
 	BOOST_CHECK_EQUAL(a1.toString(), a2.toString());
 	BOOST_CHECK_EQUAL(a2.toString(), a3.toString());
 
 	// another single source
-	s3.publish(p3, 0, "You surf the Internet, I surf the real world", 10); 
+	string data3 = "You surf the Internet, I surf the real world";
+	string data4 = "I got a fortune cookie once that said 'You like Chinese food'";
+	string data5 = "Real men wear pink. Why? Because their wives make them";
+	s3.publish(p3, 0, data3, 10); 
 	usleep(10000);
 	// another single source, multiple data at once
-	s2.publish(p2, 0, "I got a fortune cookie once that said 'You like Chinese food'", 10); 
-	s2.publish(p2, 0, "Real men wear pink. Why? Because their wives make them", 10);
+	s2.publish(p2, 0, data4, 10); 
+	s2.publish(p2, 0, data5, 10);
 	usleep(10000);
+
+	// from code logic, we won't be fetching our own data
+	a3.set(p3 + "/0/0", data3);
+	a2.set(p2 + "/0/0", data4);
+	a2.set(p2 + "/0/1", data5);
 	BOOST_CHECK_EQUAL(a1.toString(), a2.toString());
 	BOOST_CHECK_EQUAL(a2.toString(), a3.toString());
 
 	// not sure weither this is simultanous data generation from multiple sources
-	s1.publish(p1, 0, "Shakespeare says: 'Prose before hos.'", 10); 
-	s2.publish(p2, 0, "Pick good people, talent never wears out", 10); 
+	string data6 = "Shakespeare says: 'Prose before hos.'";
+	string data7 = "Pick good people, talent never wears out";
+	s1.publish(p1, 0, data6, 10); 
+	s2.publish(p2, 0, data7, 10); 
 	usleep(10000);
+
+	// from code logic, we won't be fetching our own data
+	a1.set(p1 + "/0/3", data6);
+	a2.set(p2 + "/0/2", data7);
 	BOOST_CHECK_EQUAL(a1.toString(), a2.toString());
 	BOOST_CHECK_EQUAL(a2.toString(), a3.toString());