@@ -1565,80 +1565,6 @@ impl AsRef<str> for PyExact<PyStr> {
1565
1565
}
1566
1566
}
1567
1567
1568
- #[ cfg( test) ]
1569
- mod tests {
1570
- use super :: * ;
1571
- use crate :: Interpreter ;
1572
-
1573
- #[ test]
1574
- fn str_title ( ) {
1575
- let tests = vec ! [
1576
- ( " Hello " , " hello " ) ,
1577
- ( "Hello " , "hello " ) ,
1578
- ( "Hello " , "Hello " ) ,
1579
- ( "Format This As Title String" , "fOrMaT thIs aS titLe String" ) ,
1580
- ( "Format,This-As*Title;String" , "fOrMaT,thIs-aS*titLe;String" ) ,
1581
- ( "Getint" , "getInt" ) ,
1582
- ( "Greek Ωppercases ..." , "greek ωppercases ..." ) ,
1583
- ( "Greek ῼitlecases ..." , "greek ῳitlecases ..." ) ,
1584
- ] ;
1585
- for ( title, input) in tests {
1586
- assert_eq ! ( PyStr :: from( input) . title( ) . as_str( ) , title) ;
1587
- }
1588
- }
1589
-
1590
- #[ test]
1591
- fn str_istitle ( ) {
1592
- let pos = vec ! [
1593
- "A" ,
1594
- "A Titlecased Line" ,
1595
- "A\n Titlecased Line" ,
1596
- "A Titlecased, Line" ,
1597
- "Greek Ωppercases ..." ,
1598
- "Greek ῼitlecases ..." ,
1599
- ] ;
1600
-
1601
- for s in pos {
1602
- assert ! ( PyStr :: from( s) . istitle( ) ) ;
1603
- }
1604
-
1605
- let neg = vec ! [
1606
- "" ,
1607
- "a" ,
1608
- "\n " ,
1609
- "Not a capitalized String" ,
1610
- "Not\t a Titlecase String" ,
1611
- "Not--a Titlecase String" ,
1612
- "NOT" ,
1613
- ] ;
1614
- for s in neg {
1615
- assert ! ( !PyStr :: from( s) . istitle( ) ) ;
1616
- }
1617
- }
1618
-
1619
- #[ test]
1620
- fn str_maketrans_and_translate ( ) {
1621
- Interpreter :: without_stdlib ( Default :: default ( ) ) . enter ( |vm| {
1622
- let table = vm. ctx . new_dict ( ) ;
1623
- table
1624
- . set_item ( "a" , vm. ctx . new_str ( "🎅" ) . into ( ) , vm)
1625
- . unwrap ( ) ;
1626
- table. set_item ( "b" , vm. ctx . none ( ) , vm) . unwrap ( ) ;
1627
- table
1628
- . set_item ( "c" , vm. ctx . new_str ( ascii ! ( "xda" ) ) . into ( ) , vm)
1629
- . unwrap ( ) ;
1630
- let translated =
1631
- PyStr :: maketrans ( table. into ( ) , OptionalArg :: Missing , OptionalArg :: Missing , vm)
1632
- . unwrap ( ) ;
1633
- let text = PyStr :: from ( "abc" ) ;
1634
- let translated = text. translate ( translated, vm) . unwrap ( ) ;
1635
- assert_eq ! ( translated, "🎅xda" . to_owned( ) ) ;
1636
- let translated = text. translate ( vm. ctx . new_int ( 3 ) . into ( ) , vm) ;
1637
- assert_eq ! ( "TypeError" , & * translated. unwrap_err( ) . class( ) . name( ) , ) ;
1638
- } )
1639
- }
1640
- }
1641
-
1642
1568
impl AnyStrWrapper for PyStrRef {
1643
1569
type Str = str ;
1644
1570
fn as_ref ( & self ) -> & str {
@@ -1780,3 +1706,77 @@ impl AsRef<str> for PyStrInterned {
1780
1706
self . as_str ( )
1781
1707
}
1782
1708
}
1709
+
1710
+ #[ cfg( test) ]
1711
+ mod tests {
1712
+ use super :: * ;
1713
+ use crate :: Interpreter ;
1714
+
1715
+ #[ test]
1716
+ fn str_title ( ) {
1717
+ let tests = vec ! [
1718
+ ( " Hello " , " hello " ) ,
1719
+ ( "Hello " , "hello " ) ,
1720
+ ( "Hello " , "Hello " ) ,
1721
+ ( "Format This As Title String" , "fOrMaT thIs aS titLe String" ) ,
1722
+ ( "Format,This-As*Title;String" , "fOrMaT,thIs-aS*titLe;String" ) ,
1723
+ ( "Getint" , "getInt" ) ,
1724
+ ( "Greek Ωppercases ..." , "greek ωppercases ..." ) ,
1725
+ ( "Greek ῼitlecases ..." , "greek ῳitlecases ..." ) ,
1726
+ ] ;
1727
+ for ( title, input) in tests {
1728
+ assert_eq ! ( PyStr :: from( input) . title( ) . as_str( ) , title) ;
1729
+ }
1730
+ }
1731
+
1732
+ #[ test]
1733
+ fn str_istitle ( ) {
1734
+ let pos = vec ! [
1735
+ "A" ,
1736
+ "A Titlecased Line" ,
1737
+ "A\n Titlecased Line" ,
1738
+ "A Titlecased, Line" ,
1739
+ "Greek Ωppercases ..." ,
1740
+ "Greek ῼitlecases ..." ,
1741
+ ] ;
1742
+
1743
+ for s in pos {
1744
+ assert ! ( PyStr :: from( s) . istitle( ) ) ;
1745
+ }
1746
+
1747
+ let neg = vec ! [
1748
+ "" ,
1749
+ "a" ,
1750
+ "\n " ,
1751
+ "Not a capitalized String" ,
1752
+ "Not\t a Titlecase String" ,
1753
+ "Not--a Titlecase String" ,
1754
+ "NOT" ,
1755
+ ] ;
1756
+ for s in neg {
1757
+ assert ! ( !PyStr :: from( s) . istitle( ) ) ;
1758
+ }
1759
+ }
1760
+
1761
+ #[ test]
1762
+ fn str_maketrans_and_translate ( ) {
1763
+ Interpreter :: without_stdlib ( Default :: default ( ) ) . enter ( |vm| {
1764
+ let table = vm. ctx . new_dict ( ) ;
1765
+ table
1766
+ . set_item ( "a" , vm. ctx . new_str ( "🎅" ) . into ( ) , vm)
1767
+ . unwrap ( ) ;
1768
+ table. set_item ( "b" , vm. ctx . none ( ) , vm) . unwrap ( ) ;
1769
+ table
1770
+ . set_item ( "c" , vm. ctx . new_str ( ascii ! ( "xda" ) ) . into ( ) , vm)
1771
+ . unwrap ( ) ;
1772
+ let translated =
1773
+ PyStr :: maketrans ( table. into ( ) , OptionalArg :: Missing , OptionalArg :: Missing , vm)
1774
+ . unwrap ( ) ;
1775
+ let text = PyStr :: from ( "abc" ) ;
1776
+ let translated = text. translate ( translated, vm) . unwrap ( ) ;
1777
+ assert_eq ! ( translated, "🎅xda" . to_owned( ) ) ;
1778
+ let translated = text. translate ( vm. ctx . new_int ( 3 ) . into ( ) , vm) ;
1779
+ assert_eq ! ( "TypeError" , & * translated. unwrap_err( ) . class( ) . name( ) , ) ;
1780
+ } )
1781
+ }
1782
+ }
0 commit comments