diff --git a/comsoc/cs_test.go b/comsoc/cs_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..09b21fc7323007d5e3c76f897470ed2304f807f4
--- /dev/null
+++ b/comsoc/cs_test.go
@@ -0,0 +1,144 @@
+// version 2.0.0
+
+package comsoc
+
+import "testing"
+
+func TestBordaSWF(t *testing.T) {
+	prefs := [][]Alternative{
+		{1, 2, 3},
+		{1, 2, 3},
+		{3, 2, 1},
+	}
+
+	res, _ := BordaSWF(prefs)
+
+	if res[1] != 4 {
+		t.Errorf("error, result for 1 should be 4, %d computed", res[1])
+	}
+	if res[2] != 3 {
+		t.Errorf("error, result for 2 should be 3, %d computed", res[2])
+	}
+	if res[3] != 2 {
+		t.Errorf("error, result for 3 should be 2, %d computed", res[3])
+	}
+}
+
+func TestBordaSCF(t *testing.T) {
+	prefs := [][]Alternative{
+		{1, 2, 3},
+		{1, 2, 3},
+		{3, 2, 1},
+	}
+
+	res, err := BordaSCF(prefs)
+
+	if err != nil {
+		t.Error(err)
+	}
+
+	if len(res) != 1 || res[0] != 1 {
+		t.Errorf("error, 1 should be the only best Alternative")
+	}
+}
+
+func TestMajoritySWF(t *testing.T) {
+	prefs := [][]Alternative{
+		{1, 2, 3},
+		{1, 2, 3},
+		{3, 2, 1},
+	}
+
+	res, _ := MajoritySWF(prefs)
+
+	if res[1] != 2 {
+		t.Errorf("error, result for 1 should be 2, %d computed", res[1])
+	}
+	if res[2] != 0 {
+		t.Errorf("error, result for 2 should be 0, %d computed", res[2])
+	}
+	if res[3] != 1 {
+		t.Errorf("error, result for 3 should be 1, %d computed", res[3])
+	}
+}
+
+func TestMajoritySCF(t *testing.T) {
+	prefs := [][]Alternative{
+		{1, 2, 3},
+		{1, 2, 3},
+		{3, 2, 1},
+	}
+
+	res, err := MajoritySCF(prefs)
+
+	if err != nil {
+		t.Error(err)
+	}
+
+	if len(res) != 1 || res[0] != 1 {
+		t.Errorf("error, 1 should be the only best Alternative")
+	}
+}
+
+func TestApprovalSWF(t *testing.T) {
+	prefs := [][]Alternative{
+		{1, 2, 3},
+		{1, 3, 2},
+		{2, 3, 1},
+	}
+	thresholds := []int{2, 1, 2}
+
+	res, _ := ApprovalSWF(prefs, thresholds)
+
+	if res[1] != 2 {
+		t.Errorf("error, result for 1 should be 2, %d computed", res[1])
+	}
+	if res[2] != 2 {
+		t.Errorf("error, result for 2 should be 2, %d computed", res[2])
+	}
+	if res[3] != 1 {
+		t.Errorf("error, result for 3 should be 1, %d computed", res[3])
+	}
+}
+
+func TestApprovalSCF(t *testing.T) {
+	prefs := [][]Alternative{
+		{1, 3, 2},
+		{1, 2, 3},
+		{2, 1, 3},
+	}
+	thresholds := []int{2, 1, 2}
+
+	res, err := ApprovalSCF(prefs, thresholds)
+
+	if err != nil {
+		t.Error(err)
+	}
+	if len(res) != 1 || res[0] != 1 {
+		t.Errorf("error, 1 should be the only best Alternative")
+	}
+}
+
+func TestCondorcetWinner(t *testing.T) {
+	prefs1 := [][]Alternative{
+		{1, 2, 3},
+		{1, 2, 3},
+		{3, 2, 1},
+	}
+
+	prefs2 := [][]Alternative{
+		{1, 2, 3},
+		{2, 3, 1},
+		{3, 1, 2},
+	}
+
+	res1, _ := CondorcetWinner(prefs1)
+	res2, _ := CondorcetWinner(prefs2)
+
+	if len(res1) == 0 || res1[0] != 1 {
+		t.Errorf("error, 1 should be the only best alternative for prefs1")
+	}
+	if len(res2) != 0 {
+		t.Errorf("no best alternative for prefs2")
+	}
+}