def test_normal_string_literal_not_replaced():
    q = 'SELECT "column_name" FROM table'
    replaced = replace(q, ns)
    assert_equals(q, replaced)
def test_replaces_in_single_quote_string_literal():
    q = "SELECT thing FROM place WHERE val=':ident1'"
    replaced = replace(q, ns)
    assert_equals("SELECT thing FROM place WHERE val='val1'", replaced)
def test_replaces_in_double_quote_string_literal():
    q = 'SELECT thing FROM place WHERE val=":ident1"'
    replaced = replace(q, ns)
    assert_equals('SELECT thing FROM place WHERE val="val1"', replaced)
def test_multiple_placeholders_replaced():
    q = "SELECT :ident1 FROM :ident2 WHERE :ident1=:ident3"
    replaced = replace(q, ns)
    assert_equals("SELECT val1 FROM val2 WHERE val1=55", replaced)
def test_not_found_placeholder_causes_exception():
    q = "SELECT :dummy FROM place"
    replace(q, ns)
def test_single_placeholder_replaced():
    q = "SELECT :ident1 FROM place"
    replaced = replace(q, ns)
    assert_equals("SELECT val1 FROM place", replaced)
def test_single_placeholder_replaced():
    q = "SELECT :ident1 FROM place"
    replaced = replace(q, ns)
    assert_equals("SELECT val1 FROM place", replaced)
def test_normal_string_literal_not_replaced():
    q = 'SELECT "column_name" FROM table'
    replaced = replace(q, ns)
    assert_equals(q, replaced)
def test_replaces_in_double_quote_string_literal():
    q = 'SELECT thing FROM place WHERE val=":ident1"'
    replaced = replace(q, ns)
    assert_equals('SELECT thing FROM place WHERE val="val1"', replaced)
def test_replaces_in_single_quote_string_literal():
    q = "SELECT thing FROM place WHERE val=':ident1'"
    replaced = replace(q, ns)
    assert_equals("SELECT thing FROM place WHERE val='val1'", replaced)
def test_not_found_placeholder_causes_exception():
    q = "SELECT :dummy FROM place"
    replace(q, ns)
def test_multiple_placeholders_replaced():
    q = "SELECT :ident1 FROM :ident2 WHERE :ident1=:ident3"
    replaced = replace(q, ns)
    assert_equals("SELECT val1 FROM val2 WHERE val1=55", replaced)