TEST_F(WPA2DecryptTest, HandshakeCapturedCallback) {
    using namespace std::placeholders;

    Crypto::WPA2Decrypter decrypter;
    decrypter.add_ap_data("libtinstest", "NODO", "00:1b:11:d2:1b:eb");
    decrypter.add_ap_data("Induction", "Coherer", "00:0c:41:82:b2:55");
    decrypter.handshake_captured_callback(std::bind(&WPA2DecryptTest::handshake_captured,
                                          this, _1, _2, _3));
    for(size_t i = 1; i < 7; ++i) {
        RadioTap radio(ccmp_packets[i], ccmp_packets_size[i]);
        decrypter.decrypt(radio);
    }
    for(size_t i = 1; i < 7; ++i) {
        RadioTap radio(tkip_packets[i], tkip_packets_size[i]);
        decrypter.decrypt(radio);
    }

    ASSERT_EQ(2U, handshakes_.size());
    handshake hs = handshakes_[0];
    EXPECT_EQ(hs.ssid, "Coherer");
    EXPECT_EQ(address_type("00:0d:93:82:36:3a"), hs.client_hw);
    EXPECT_EQ(address_type("00:0c:41:82:b2:55"), hs.bssid);

    hs = handshakes_[1];
    EXPECT_EQ(hs.ssid, "NODO");
    EXPECT_EQ(address_type("94:0c:6d:8f:93:88"), hs.client_hw);
    EXPECT_EQ(address_type("00:1b:11:d2:1b:eb"), hs.bssid);
}