<s> import pytest <EOL> from cocopot . routing import Router <EOL> from cocopot . exceptions import BadRequest , NotFound , MethodNotAllowed <EOL> def test_basic_routing ( ) : <EOL> r = Router ( ) <EOL> r . add ( '<STR_LIT:/>' , endpoint = '<STR_LIT:index>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:foo>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:bar>' ) <EOL> assert r . match ( '<STR_LIT:/>' ) == ( '<STR_LIT:index>' , { } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:foo>' , { } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:bar>' , { } ) <EOL> pytest . raises ( NotFound , lambda : r . match ( '<STR_LIT>' ) ) <EOL> pytest . raises ( MethodNotAllowed , lambda : r . match ( '<STR_LIT>' , method = '<STR_LIT:POST>' ) ) <EOL> def test_basic_routing2 ( ) : <EOL> r = Router ( strict = True ) <EOL> r . add ( '<STR_LIT:/>' , endpoint = '<STR_LIT:index>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:foo>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:bar>' ) <EOL> assert r . match ( '<STR_LIT:/>' ) == ( '<STR_LIT:index>' , { } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:foo>' , { } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:bar>' , { } ) <EOL> pytest . raises ( NotFound , lambda : r . match ( '<STR_LIT>' ) ) <EOL> pytest . raises ( MethodNotAllowed , lambda : r . match ( '<STR_LIT>' , method = '<STR_LIT:POST>' ) ) <EOL> def test_dynamic_routing ( ) : <EOL> r = Router ( ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:index>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:foo>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:bar>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT>' ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT>' ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:index>' , { '<STR_LIT:name>' : '<STR_LIT:foo>' } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:foo>' , { '<STR_LIT>' : '<STR_LIT:bar>' } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:bar>' , { '<STR_LIT:bar>' : <NUM_LIT:20> } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT>' , { '<STR_LIT>' : <NUM_LIT> } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT>' , { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> def test_default_values ( ) : <EOL> r = Router ( ) <EOL> r . add ( '<STR_LIT>' , endpoint = '<STR_LIT:index>' , defaults = { '<STR_LIT:foo>' : <NUM_LIT> , '<STR_LIT:name>' : '<STR_LIT:bar>' } ) <EOL> assert r . match ( '<STR_LIT>' ) == ( '<STR_LIT:index>' , { '<STR_LIT:name>' : '<STR_LIT:foo>' , '<STR_LIT:foo>' : <NUM_LIT> } ) </s>
