--- /dev/null
+#include <gtest/gtest.h>
+#include <pbc/pbc.h>
+
+#include "DIPE.h"
+
+static pairing_t pairing;
+
+
+/* PBC is using multiplicative notion and ONE is indeed the neutral
+ * element wrt multiplication.
+ */
+TEST(PbcTest, PbcOneTest) {
+ element_t g1;
+ element_t z;
+ element_t g1z;
+
+ element_init_G1(g1, pairing);
+ element_init_Zr(z, pairing);
+ element_init_G1(g1z, pairing);
+
+ element_set1(g1);
+ element_random(z);
+ element_pow_zn(g1z, g1, z);
+
+ EXPECT_EQ(element_cmp(g1, g1z), 0);
+
+ element_clear(g1);
+ element_clear(z);
+ element_clear(g1z);
+}
+
+TEST(PbcTest, PbcFromHash) {
+ char test1[] = "pbctest1";
+ char test2[] = "pbctest2";
+ element_t a, b;
+
+ element_init_G2(a, pairing);
+ element_init_G2(b, pairing);
+
+ element_from_hash(a, test1, 8);
+ element_from_hash(b, test1, 8);
+ EXPECT_EQ(element_cmp(a, b), 0);
+
+ element_from_hash(a, test1, 8);
+ element_from_hash(b, test2, 8);
+ EXPECT_NE(element_cmp(a, b), 0);
+
+ element_clear(a);
+ element_clear(b);
+}
+
+int main(int argc, char **argv) {
+ char buffer[2<<16];
+ ::testing::InitGoogleTest(&argc, argv);
+
+ FILE *fp;
+ fp = fopen("../tests/a.param", "r");
+ if (fp == NULL) {
+ perror("Reading Pairing Parameters");
+ return 1;
+ }
+ size_t count = fread(buffer, 1, 2<<16, fp);
+
+ pairing_init_set_buf(pairing, buffer, 2<<16);
+
+
+ int result = RUN_ALL_TESTS();
+ pairing_clear(pairing);
+ return result;
+}
+