Source of: markdown/Test.md.twig

			---
date: '2014-01-19'
---

ADC Test specification {{ '{#adc_test_specification}' }} 
======================

Fredrik Ullner <[email protected]> 1.0.0, December 2012

> These is the official test specification for ADC.
>
> This document describes the different circumstances that may arise and
> what implementations may be aware that others are sending and how they
> are processing the information.
>
> The *server* in this document may describe the server party in a
> client-hub connection as well as in a client-client connection.

Version history {{ '{#version_history}' }} 
===============

The latest draft of the next version of this document as well as
intermediate and older versions can be downloaded from \$URL:
<https://adc.svn.sourceforge.net/svnroot/adc/trunk/ADC-Test.txt> \$.

This version corresponds to \$Revision: 90 \$.

Version 1.0 {{ '{#version_1_0}' }} 
-----------

Fredrik Ullner <[email protected]>, 2012-12-27

-   Initial release.

Tests {{ '{#tests}' }} 
=====

GPA {{ '{#gpa}' }} 
---

### Too short random data {{ '{#too_short_random_data}' }} 

Purpose: Validate what a client does when it receives random data in the
GPA that is too short (less than 24 bytes)

Expected: Client sends a STA indicating that the GPA is invalid and
disconnects.

Steps:

| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client B sends "INF BBBB …"                                                                         |         |
| 5         | The server sends "GPA A" (1 byte)                                                                       |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in random data {{ '{#invalid_characters_in_random_data}' }} 

Purpose: Validate what a client does when it receives random data in the
GPA that contain invalid characters (1 for instance)

Expected: Client sends a STA indicating that the GPA is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client B sends "INF BBBB …"                                                                         |         |
| 5         | The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAA1" (24 bytes)                                              |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid random data {{ '{#valid_random_data}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty GPA {{ '{#empty_gpa}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

INF {{ '{#inf}' }} 
---

### ID and PD fields present and matching {{ '{#id_and_pd_fields_present_and_matching}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### ID and PD fields present and mismatching {{ '{#id_and_pd_fields_present_and_mismatching}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Only ID field present {{ '{#only_id_field_present}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Only PD field present {{ '{#only_pd_field_present}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Neither ID or PD fields present {{ '{#neither_id_or_pd_fields_present}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in ID field {{ '{#invalid_characters_in_id_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in PD field {{ '{#invalid_characters_in_pd_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in NI field {{ '{#invalid_characters_in_ni_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in DE field {{ '{#invalid_characters_in_de_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in I4 field {{ '{#invalid_characters_in_i4_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in I6 field {{ '{#invalid_characters_in_i6_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid IP in I4 field {{ '{#invalid_ip_in_i4_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid IP in I6 field {{ '{#invalid_ip_in_i6_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Wrong IP in I4 field {{ '{#wrong_ip_in_i4_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Wrong IP in I6 field {{ '{#wrong_ip_in_i6_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### DNS in I4 field {{ '{#dns_in_i4_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### DNS in I6 field {{ '{#dns_in_i6_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Zero address in I4 field {{ '{#zero_address_in_i4_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Zero address in I6 field {{ '{#zero_address_in_i6_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Correct address in I4 field {{ '{#correct_address_in_i4_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Correct address in I6 field {{ '{#correct_address_in_i6_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too long FOURCC in SU field {{ '{#too_long_fourcc_in_su_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too short FOURCC in SU field {{ '{#too_short_fourcc_in_su_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid FOURCC in SU field {{ '{#invalid_fourcc_in_su_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid formatting of SU field {{ '{#invalid_formatting_of_su_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty INF {{ '{#empty_inf}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Underflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#underflow_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Negative out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#negative_out_of_range_value_for_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### 0 value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#0_value_for_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Overflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#overflow_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Positive out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#positive_out_of_range_value_for_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#invalid_characters_in_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

MSG {{ '{#msg}' }} 
---

### A basic MSG with no named parameters {{ '{#a_basic_msg_with_no_named_parameters}' }} 

Purpose: Validate that the server forwards the message unmodified

Expected: The other client receives the message unmodified and display
it appropriately

Steps:


| Step item | Info                                                                                                                                                                               | Comment |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 2         | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 3         | Client A sends "MSG example"                                                                                                                                                       |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### A basic MSG with ME field {{ '{#a_basic_msg_with_me_field}' }} 

Purpose: Validate that the server forwards the message unmodified

Expected: The other client receives the message unmodified and display
it appropriately

Steps:


| Step item | Info                                                                                                                                                                               | Comment |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 2         | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 3         | Client A sends "MSG example ME1"                                                                                                                                                   |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### A basic MSG with PM field {{ '{#a_basic_msg_with_pm_field}' }} 

Purpose: Validate that the server forwards the message unmodified

Expected: The other client receives the message unmodified and display
it appropriately

Steps:


| Step item | Info                                                                                                                                                                               | Comment |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 2         | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 3         | Client A sends "MSG example PMAAAA" (Client A’s SID)                                                                                                                               |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### A basic MSG with ME and PM fields {{ '{#a_basic_msg_with_me_and_pm_fields}' }} 

Purpose: Validate that the server forwards the message unmodified

Expected: The other client receives the message unmodified and display
it appropriately

Steps:


| Step item | Info                                                                                                                                                                               | Comment |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 2         | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 3         | Client A sends "MSG example ME1 PMAAAA" (Client A’s SID)                                                                                                                           |         |
| 4         | Client A sends "MSG example PMAAAA ME1" (Client A’s SID)                                                                                                                           |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Negative out-of-bounds value in ME field {{ '{#negative_out_of_bounds_value_in_me_field}' }} 

Purpose: Validate that the server does not forward the message

Expected: The other client does not receive the message

Steps:


| Step item | Info                                                                                                                                                                               | Comment |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 2         | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized |         |
| 3         | Client A sends "MSG example ME-1"                                                                                                                                                  |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Underflow value in ME field {{ '{#underflow_value_in_me_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### 0 Value in ME field {{ '{#0_value_in_me_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty ME field {{ '{#empty_me_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Overflow value in ME field {{ '{#overflow_value_in_me_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Postive out-of-bounds value in ME field {{ '{#postive_out_of_bounds_value_in_me_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in ME field {{ '{#invalid_characters_in_me_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty PM {{ '{#empty_pm}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too short SID value in PM field {{ '{#too_short_sid_value_in_pm_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too long SID value in PM field {{ '{#too_long_sid_value_in_pm_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters SID value in PM field {{ '{#invalid_characters_sid_value_in_pm_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Non-existing SID value in PM field {{ '{#non_existing_sid_value_in_pm_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### MSG in PROTOCOL state {{ '{#msg_in_protocol_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### MSG in IDENTIFY state {{ '{#msg_in_identify_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### MSG in VERIFY state {{ '{#msg_in_verify_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### MSG in NORMAL state {{ '{#msg_in_normal_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

PAS {{ '{#pas}' }} 
---

### Invalid response based on the GPA {{ '{#invalid_response_based_on_the_gpa}' }} 

Purpose: Validate what a server does when it receives a response that
does not match the request.

Expected: Server sends a STA indicating that the PAS is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client B sends "INF BBBB …"                                                                         |         |
| 5         | The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes)                                              |         |
| 6         | The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBBB"                                                         |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in response {{ '{#invalid_characters_in_response}' }} 

Purpose: Validate what a server does when it receives a response that
contain invalid characters (1 for instance)

Expected: Server sends a STA indicating that the PAS is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client B sends "INF BBBB …"                                                                         |         |
| 5         | The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes)                                              |         |
| 6         | The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBB1" (last byte is invalid)                                  |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid response {{ '{#valid_response}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty PAS {{ '{#empty_pas}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

QUI {{ '{#qui}' }} 
---

### Too short SID {{ '{#too_short_sid}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too long SID {{ '{#too_long_sid}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in SID {{ '{#invalid_characters_in_sid}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### No client with the specified SID {{ '{#no_client_with_the_specified_sid}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too short ID field {{ '{#too_short_id_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too long ID field {{ '{#too_long_id_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in ID field {{ '{#invalid_characters_in_id_field_2}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### No client with the specified SID in the ID field {{ '{#no_client_with_the_specified_sid_in_the_id_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Negative out-of-bounds value in TL field {{ '{#negative_out_of_bounds_value_in_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Underflow TL field {{ '{#underflow_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Overflow TL field {{ '{#overflow_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### -1 (forever) in TL field {{ '{#1_forever_in_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### 120 second value in TL field {{ '{#120_second_value_in_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in TL field {{ '{#invalid_characters_in_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty TL field {{ '{#empty_tl_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### "example" in MS field {{ '{#example_in_ms_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty MS field {{ '{#empty_ms_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Negative out-of-bounds value in DI field {{ '{#negative_out_of_bounds_value_in_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Underflow DI field {{ '{#underflow_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Overflow DI field {{ '{#overflow_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### 0 as value in DI field {{ '{#0_as_value_in_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### 1 as value in DI field {{ '{#1_as_value_in_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in DI field {{ '{#invalid_characters_in_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty DI field {{ '{#empty_di_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty RD field {{ '{#empty_rd_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### QUI in PROTOCOL state {{ '{#qui_in_protocol_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### QUI in IDENTIFY state {{ '{#qui_in_identify_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### QUI in VERIFY state {{ '{#qui_in_verify_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### QUI in NORMAL state {{ '{#qui_in_normal_state}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

SCH {{ '{#sch}' }} 
---

### Underflow fields LE, GE, EQ, TY {{ '{#underflow_fields_le_ge_eq_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Negative out-of-range value for fields LE, GE, EQ, TY {{ '{#negative_out_of_range_value_for_fields_le_ge_eq_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### 0 value for fields LE, GE, EQ, TY {{ '{#0_value_for_fields_le_ge_eq_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Overflow fields LE, GE, EQ, TY {{ '{#overflow_fields_le_ge_eq_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Positive out-of-range value for TY {{ '{#positive_out_of_range_value_for_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in fields LE, GE, EQ, TY {{ '{#invalid_characters_in_fields_le_ge_eq_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Combination of LE and EQ fields with conflicting values {{ '{#combination_of_le_and_eq_fields_with_conflicting_values}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Combination of GE and EQ fields with conflicting values {{ '{#combination_of_ge_and_eq_fields_with_conflicting_values}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Combination of LE, GE and EQ fields with conflicting values {{ '{#combination_of_le_ge_and_eq_fields_with_conflicting_values}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid AN field {{ '{#valid_an_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid NO field {{ '{#valid_no_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Only NO field {{ '{#only_no_field}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Combination of AN and NO fields with conflicting values {{ '{#combination_of_an_and_no_fields_with_conflicting_values}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in field EX {{ '{#invalid_characters_in_field_ex}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty AN {{ '{#empty_an}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty NO {{ '{#empty_no}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty EX {{ '{#empty_ex}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty LE {{ '{#empty_le}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty GE {{ '{#empty_ge}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty EQ {{ '{#empty_eq}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty TO {{ '{#empty_to}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Empty TY {{ '{#empty_ty}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

SID {{ '{#sid}' }} 
---

### Too short SID from hub {{ '{#too_short_sid_from_hub}' }} 

Purpose: Validate what a client does when it receives an SID that is too
short (less than 4 characters)

Expected: Client sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBB"                                                                              |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too long SID from hub {{ '{#too_long_sid_from_hub}' }} 

Purpose: Validate what a client does when it receives an SID that is too
long (longer than 4 characters)

Expected: Client sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBBB"                                                                            |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in SID from hub {{ '{#invalid_characters_in_sid_from_hub}' }} 

Purpose: Validate what a client does when it receives an SID that
contain invalid characters (1 for instance)

Expected: Client sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBB1"                                                                             |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too short SID from client in INF {{ '{#too_short_sid_from_client_in_inf}' }} 

Purpose: Validate what a server does when it receives an SID that is too
short (less than 4 characters)

Expected: Server sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client sends "INF BBB …"                                                                            |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Too long SID from client in INF {{ '{#too_long_sid_from_client_in_inf}' }} 

Purpose: Validate what a server does when it receives an SID that is too
long (longer than 4 characters)

Expected: Server sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client sends INF BBBBB …"                                                                           |         |

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid characters in SID from client {{ '{#invalid_characters_in_sid_from_client}' }} 

Purpose: Validate what a server does when it receives an SID that
contain invalid characters (1 for instance)

Expected: Server sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client sends "INF BBB1 …"                                                                           |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Non-assigned SID from client {{ '{#non_assigned_sid_from_client}' }} 

Purpose: Validate what a server does when it receives an SID that it
didn’t assign a client.

Expected: Server sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | The client sends "INF CCCC …"                                                                           |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Assigned SID from another client {{ '{#assigned_sid_from_another_client}' }} 

Purpose: Validate what a server does when it receives an SID that was
already assigned to another a client.

Expected: Server sends a STA indicating that the SID is invalid and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | The server sends "SID BBBB"                                                                             |         |
| 4         | Continue with normal communication until NORMAL is reached and stabalized                               |         |
| 5         | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 6         | The server sends "SID CCCC"                                                                             |         |
| 7         | Client B sends "INF BBBB …"                                                                             |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid SID assignment {{ '{#valid_sid_assignment}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid SID use {{ '{#valid_sid_use}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### No SID from server {{ '{#no_sid_from_server}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

SUP {{ '{#sup}' }} 
---

### Invalid BASE version from server {{ '{#invalid_base_version_from_server}' }} 

Purpose: Validate what a client does when it receives BAS2 instead of
BASE.

Expected: Client sends a STA indicating lack of support for BASE and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE …"        |         |
| 2         | The server responds with "SUP ADBAS2 …"                                                                 |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Invalid BASE version from client {{ '{#invalid_base_version_from_client}' }} 

Purpose: Validate what a server does when it receives BAS2 instead of
BASE

Expected: Server sends a STA indicating lack of support for BASE and
disconnects

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBAS2 …         |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Lack of overlapping hash support from server {{ '{#lack_of_overlapping_hash_support_from_server}' }} 

Purpose: Validate what a client does when it does not receive
overlapping hashes.

Expected: Client sends a STA indicating no overlapping hash support and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"   |         |
| 2         | The server responds with "SUP ADBASE"                                                                   |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Lack of overlapping hash support from client {{ '{#lack_of_overlapping_hash_support_from_client}' }} 

Purpose: Validate what a server does when it does not receive
overlapping hashes.

Expected: Server sends a STA indicating no overlapping hash support and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE"          |         |

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Remove BASE support in NORMAL from server {{ '{#remove_base_support_in_normal_from_server}' }} 

Purpose: Validate what a client does when the BASE support is removed
during NORMAL state.

Expected: Client sends a STA indicating lack of support for BASE and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | Continue with normal communication until NORMAL is reached and stabalized                               |         |
| 4         | The server sends "SUP RMBASE"                                                                           |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Remove BASE support in NORMAL from client {{ '{#remove_base_support_in_normal_from_client}' }} 

Purpose: Validate what a server does when the BASE support is removed
during NORMAL state.

Expected: Server sends a STA indicating lack of support for BASE and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | Continue with normal communication until NORMAL is reached and stabalized                               |         |
| 4         | The client sends "SUP RMBASE"                                                                           |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Remove hash support in NORMAL from server {{ '{#remove_hash_support_in_normal_from_server}' }} 

Purpose: Validate what a client does when the hash support is removed
during NORMAL state.

Expected: Client sends a STA indicating lack of support for TIGR and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | Continue with normal communication until NORMAL is reached and stabalized                               |         |
| 4         | The server sends "SUP RMTIGR"                                                                           |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Remove hash support in NORMAL from client {{ '{#remove_hash_support_in_normal_from_client}' }} 

Purpose: Validate what a server does when the hash support is removed
during NORMAL state.

Expected: Server sends a STA indicating lack of support for TIGR and
disconnects.

Steps:


| Step item | Info                                                                                                    | Comment |
| --------- | ------------------------------------------------------------------------------------------------------- | ------- |
| 1         | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" |         |
| 2         | The server responds with "SUP ADBASE ADTIGR"                                                            |         |
| 3         | Continue with normal communication until NORMAL is reached and stabalized                               |         |

| 4                    | The client sends     |         |
|         | "SUP RMTIGR"         |         |


Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### No SUP content from client {{ '{#no_sup_content_from_client}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### No SUP content from server {{ '{#no_sup_content_from_server}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid SUP sequence from server {{ '{#valid_sup_sequence_from_server}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Valid SUP sequence from client {{ '{#valid_sup_sequence_from_client}' }} 

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

General {{ '{#general}' }} 
-------

### Server forwards unknown fields {{ '{#server_forwards_unknown_fields}' }} 

Purpose: Validate if the server forwards unknown fields to other clients

Expected: Server forwards the unknown field

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

### Server forwards unknown commands {{ '{#server_forwards_unknown_commands}' }} 

Purpose: Validate that the server forwards the unknwon command

Expected: The server forwards the unknown command

Result:

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------