#
#  Tests for xlat expansion
#

xlat %{foo: bar}
data ERROR offset 2 'Unknown module'

xlat %{test:bar}
data %{test:bar}

xlat %{1}
data %{1}

xlat %{33}
data ERROR offset 2 'Invalid regex reference.  Must be in range 0-32'

xlat %{%{foo}:-%{bar}}
data ERROR offset 4 'Unknown attribute'

xlat %{%{User-Name}:-%{bar}}
data ERROR offset 18 'Unknown attribute'

xlat %{%{User-Name}:-bar}
data %{%{User-Name}:-bar}

xlat %{%{test:bar}:-%{User-Name}}
data %{%{test:bar}:-%{User-Name}}

xlat %{%{test:bar}:-%{%{User-Name}:-bar}}
data %{%{test:bar}:-%{%{User-Name}:-bar}}

xlat %{Tunnel-Password}
data %{Tunnel-Password}

xlat %{Tunnel-Password:1}
data %{Tunnel-Password:1}

xlat %{Tunnel-Password:1[3]}
data %{Tunnel-Password:1[3]}

xlat %{Tunnel-Password:1[*]}
data %{Tunnel-Password:1[*]}

xlat %{Tunnel-Password:1[#]}
data %{Tunnel-Password:1[#]}

xlat %{reply:Tunnel-Password}
data %{reply:Tunnel-Password}

xlat %{reply:Tunnel-Password:1}
data %{reply:Tunnel-Password:1}

xlat %{reply:Tunnel-Password:1[3]}
data %{reply:Tunnel-Password:1[3]}

xlat %{reply:Tunnel-Password:1[*]}
data %{reply:Tunnel-Password:1[*]}

xlat %{reply:Tunnel-Password:1[#]}
data %{reply:Tunnel-Password:1[#]}

xlat %{User-Name[3]}
data %{User-Name[3]}

xlat %{User-Name[*]}
data %{User-Name[*]}

xlat %{User-Name[#]}
data %{User-Name[#]}

xlat %{request:User-Name[3]}
data %{User-Name[3]}

xlat %{request:User-Name[*]}
data %{User-Name[*]}

xlat %{request:User-Name[#]}
data %{User-Name[#]}

xlat %{coa:User-Name[#]}
data %{coa:User-Name[#]}

xlat %{coaX:User-Name[#]}
data ERROR offset 2 'Unknown module'

xlat %{3GPP-SGSN-Address}
data %{3GPP-SGSN-Address}

xlat %{%{Operator-Name}:-}
data %{%{Operator-Name}:-}

xlat %{%{}:-}
data ERROR offset 4 'Empty expression is invalid'

xlat %{%{}:-foo}
data ERROR offset 4 'Empty expression is invalid'

xlat %{}
data ERROR offset 2 'Empty expression is invalid'

xlat %{ }
data ERROR offset 2 'Invalid attribute name'

xlat %{%{User-Name}:-}
data %{%{User-Name}:-}

xlat "Hello %S goo"
data "Hello %S goo"

xlat "%{Foreach-Variable-0}"
data "%{Foreach-Variable-0}"

#
#  3GPP stuff, to distinguish "list:3GPP" from
#  "attribute:tag"
#
xlat "%{request:3GPP-IMSI}"
data "%{3GPP-IMSI}"

xlat "%{reply:3GPP-IMSI}"
data "%{reply:3GPP-IMSI}"

xlat "%{reply:3GPP-IMSI[2]}"
data "%{reply:3GPP-IMSI[2]}"

xlat /([A-Z0-9\-]*)_%{Calling-Station-Id}/
data /([A-Z0-9\-]*)_%{Calling-Station-Id}/

xlat %{length:1 + 2
data ERROR offset 14 'Missing closing brace at end of string'

xlat "%t\tfoo"
data "%t\tfoo"

xlat "%t\t%{Client-IP-Address}"
data "%t\t%{Client-IP-Address}"

xlat "foo %{test}"
data ERROR offset 11 'Missing content in expansion'

xlat "foo %{test:foo}"
data "foo %{test:foo}"
