'Test for protocol negotiation when explicit versions are set
If an explicit protocol version that is not compatible with the server version is set
an exception should be thrown. It should not attempt to negotiate
for reference supported protocol version to server versions is as follows/
1.2 -> 1
2.0 -> 2, 1
2.1 -> 3, 2, 1
2.2 -> 4, 3, 2, 1
3.X -> 4, 3
@since 3.6.0
@jira_ticket PYTHON-537
@expected_result downgrading should not be allowed when explicit protocol versions are set.
@test_category connection'

def test_invalid_protocol_negotation(self):

    upper_bound = get_unsupported_upper_protocol()
    if (upper_bound is not None):
        cluster = Cluster(protocol_version=upper_bound)
        with self.assertRaises(NoHostAvailable):
            cluster.connect()
        cluster.shutdown()
    lower_bound = get_unsupported_lower_protocol()
    if (lower_bound is not None):
        cluster = Cluster(protocol_version=lower_bound)
        with self.assertRaises(NoHostAvailable):
            cluster.connect()
        cluster.shutdown()
