         
         XCTAssert(try Value.uint8(0x01).compare(.bool(true), operator: .equalTo))
         XCTAssert(try Value.uint8(0x00).compare(.bool(true), operator: .notEqualTo))
+        XCTAssert(try Value.bool(true).compare(.uint8(0x01), operator: .equalTo))
+        XCTAssert(try Value.bool(false).compare(.uint8(0x01), operator: .notEqualTo))
         XCTAssert(try Value.uint8(0x01).compare(.int8(0x01), operator: .equalTo))
         XCTAssert(try Value.uint8(0x00).compare(.uint16(0x01), operator: .notEqualTo))
         XCTAssert(try Value.uint16(0x1234).compare(.uint32(0x1200), operator: .notEqualTo))

        let uuid = UUID()
        
        XCTAssert(try Value.uuid(uuid).compare(.uuid(uuid), operator: .equalTo))
        XCTAssert(try Value.uuid(uuid).compare(.uuid(UUID()), operator: .notEqualTo))
        XCTAssert(try Value.uuid(UUID()).compare(.uuid(uuid), operator: .notEqualTo))
    }

        XCTAssert(try Value.int64(.max).compare(.int32(.max), operator: .greaterThan))
        XCTAssert(try Value.int32(.max).compare(.int32(.max), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.uint32(.max).compare(.int32(.max), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.bool(true).compare(.bool(true), operator: .equalTo))
        XCTAssert(try Value.bool(false).compare(.bool(false), operator: .equalTo))
        XCTAssertFalse(try Value.bool(true).compare(.bool(true), operator: .notEqualTo))
        XCTAssert(try Value.bool(true).compare(.bool(false), operator: .notEqualTo))
        XCTAssert(try Value.bool(false).compare(.bool(true), operator: .notEqualTo))
        XCTAssertFalse(try Value.bool(true).compare(.bool(true), operator: .notEqualTo))
        
        XCTAssert(try Value.uint8(0xAB).compare(.uint8(0xAB), operator: .equalTo))
        XCTAssert(try Value.uint8(0xAB).compare(.uint8(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.uint8(0x01).compare(.uint8(0x00), operator: .notEqualTo))
        XCTAssert(try Value.uint8(0x01).compare(.uint8(0xFF), operator: .lessThan))
        XCTAssert(try Value.uint8(0x01).compare(.uint8(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint8(0xFF).compare(.uint8(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint8(0xFF).compare(.uint8(0x01), operator: .greaterThan))
        XCTAssert(try Value.uint8(0xFF).compare(.uint8(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.uint8(0x11).compare(.uint8(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.uint16(0xAB).compare(.uint16(0xAB), operator: .equalTo))
        XCTAssert(try Value.uint16(0xAB).compare(.uint16(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.uint16(0x01).compare(.uint16(0x00), operator: .notEqualTo))
        XCTAssert(try Value.uint16(0x01).compare(.uint16(0xFF), operator: .lessThan))
        XCTAssert(try Value.uint16(0x01).compare(.uint16(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint16(0xFF).compare(.uint16(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint16(0xFF).compare(.uint16(0x01), operator: .greaterThan))
        XCTAssert(try Value.uint16(0xFF).compare(.uint16(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.uint16(0x11).compare(.uint16(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.uint32(0xAB).compare(.uint32(0xAB), operator: .equalTo))
        XCTAssert(try Value.uint32(0xAB).compare(.uint32(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.uint32(0x01).compare(.uint32(0x00), operator: .notEqualTo))
        XCTAssert(try Value.uint32(0x01).compare(.uint32(0xFF), operator: .lessThan))
        XCTAssert(try Value.uint32(0x01).compare(.uint32(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint32(0xFF).compare(.uint32(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint32(0xFF).compare(.uint32(0x01), operator: .greaterThan))
        XCTAssert(try Value.uint32(0xFF).compare(.uint32(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.uint32(0x11).compare(.uint32(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.uint64(0xAB).compare(.uint64(0xAB), operator: .equalTo))
        XCTAssert(try Value.uint64(0xAB).compare(.uint64(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.uint64(0x01).compare(.uint64(0x00), operator: .notEqualTo))
        XCTAssert(try Value.uint64(0x01).compare(.uint64(0xFF), operator: .lessThan))
        XCTAssert(try Value.uint64(0x01).compare(.uint64(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint64(0xFF).compare(.uint64(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.uint64(0xFF).compare(.uint64(0x01), operator: .greaterThan))
        XCTAssert(try Value.uint64(0xFF).compare(.uint64(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.uint64(0x11).compare(.uint64(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.int8(0x01).compare(.int8(0x01), operator: .equalTo))
        XCTAssert(try Value.int8(0x01).compare(.int8(0x00), operator: .notEqualTo))
        XCTAssert(try Value.int8(0x01).compare(.int8(0x00), operator: .notEqualTo))
        XCTAssert(try Value.int8(0x01).compare(.int8(.max), operator: .lessThan))
        XCTAssert(try Value.int8(0x01).compare(.int8(.max), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int8(.max).compare(.int8(.max), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int8(.max).compare(.int8(0x01), operator: .greaterThan))
        XCTAssert(try Value.int8(.max).compare(.int8(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.int8(0x11).compare(.int8(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.int16(0xAB).compare(.int16(0xAB), operator: .equalTo))
        XCTAssert(try Value.int16(0xAB).compare(.int16(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.int16(0x01).compare(.int16(0x00), operator: .notEqualTo))
        XCTAssert(try Value.int16(0x01).compare(.int16(.max), operator: .lessThan))
        XCTAssert(try Value.int16(0x01).compare(.int16(.max), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int16(.max).compare(.int16(.max), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int16(.max).compare(.int16(0x01), operator: .greaterThan))
        XCTAssert(try Value.int16(.max).compare(.int16(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.int16(0x11).compare(.int16(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.int32(0xAB).compare(.int32(0xAB), operator: .equalTo))
        XCTAssert(try Value.int32(0xAB).compare(.int32(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.int32(0x01).compare(.int32(0x00), operator: .notEqualTo))
        XCTAssert(try Value.int32(0x01).compare(.int32(0xFF), operator: .lessThan))
        XCTAssert(try Value.int32(0x01).compare(.int32(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int32(0xFF).compare(.int32(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int32(0xFF).compare(.int32(0x01), operator: .greaterThan))
        XCTAssert(try Value.int32(0xFF).compare(.int32(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.int32(0x11).compare(.int32(0x01), operator: .greaterThanOrEqualTo))
        
        XCTAssert(try Value.int64(0xAB).compare(.int64(0xAB), operator: .equalTo))
        XCTAssert(try Value.int64(0xAB).compare(.int64(0xCD), operator: .notEqualTo))
        XCTAssert(try Value.int64(0x01).compare(.int64(0x00), operator: .notEqualTo))
        XCTAssert(try Value.int64(0x01).compare(.int64(0xFF), operator: .lessThan))
        XCTAssert(try Value.int64(0x01).compare(.int64(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int64(0xFF).compare(.int64(0xFF), operator: .lessThanOrEqualTo))
        XCTAssert(try Value.int64(0xFF).compare(.int64(0x01), operator: .greaterThan))
        XCTAssert(try Value.int64(0xFF).compare(.int64(0x01), operator: .greaterThanOrEqualTo))
        XCTAssert(try Value.int64(0x11).compare(.int64(0x01), operator: .greaterThanOrEqualTo))
    }
}
