use std::default::Default;

use rtps::*;
use rtps::common_types::*;

use factories::Create;

#[test]
fn test_stateless_writer_heartbeat_increments_count() {
    let mut writer : StatelessWriter = Create::create();

    writer.new_change(
        ChangeKind::ALIVE, InstanceHandle::new(),
        ArcBuffer::from_vec(vec![])
    );
    writer.new_change(
        ChangeKind::ALIVE, InstanceHandle::new(),
        ArcBuffer::from_vec(vec![])
    );

    let reader_entity_id : EntityId = Default::default();

    let mut common_heartbeat = SubmessageVariant::Heartbeat {
        writer_id: Default::default(),
        reader_id: Default::default(),
        first_sn: 1,
        last_sn: 2,
        count: Default::default(),
    };

    let heartbeat = writer.heartbeat(reader_entity_id);
    if let SubmessageVariant::Heartbeat{ref mut count, ..} = common_heartbeat {
        *count = 0;
    }
    assert_eq!(heartbeat, common_heartbeat);

    let heartbeat2 = writer.heartbeat(reader_entity_id);
    if let SubmessageVariant::Heartbeat{ref mut count, ..} = common_heartbeat {
        *count = 1;
    }
    assert_eq!(heartbeat2, common_heartbeat);

}