| 1859 | |
| 1860 | #[test] |
| 1861 | fn pop_back_works_with_empty_strings() { |
| 1862 | { |
| 1863 | let mut ptr = PointerBuf::new(); |
| 1864 | ptr.push_back(""); |
| 1865 | ptr.push_back(""); |
| 1866 | ptr.push_back("bar"); |
| 1867 | |
| 1868 | assert_eq!(ptr.tokens().count(), 3); |
| 1869 | ptr.pop_back(); |
| 1870 | assert_eq!(ptr.tokens().count(), 2); |
| 1871 | ptr.pop_back(); |
| 1872 | assert_eq!(ptr.tokens().count(), 1); |
| 1873 | ptr.pop_back(); |
| 1874 | assert_eq!(ptr.tokens().count(), 0); |
| 1875 | assert_eq!(ptr, PointerBuf::new()); |
| 1876 | } |
| 1877 | { |
| 1878 | let mut ptr = PointerBuf::new(); |
| 1879 | assert_eq!(ptr.tokens().count(), 0); |
| 1880 | ptr.push_back(""); |
| 1881 | assert_eq!(ptr.tokens().count(), 1); |
| 1882 | ptr.pop_back(); |
| 1883 | assert_eq!(ptr.tokens().count(), 0); |
| 1884 | } |
| 1885 | { |
| 1886 | let mut ptr = PointerBuf::new(); |
| 1887 | let input = ["", "", "", "foo", "", "bar", "baz", ""]; |
| 1888 | for (idx, &s) in input.iter().enumerate() { |
| 1889 | assert_eq!(ptr.tokens().count(), idx); |
| 1890 | ptr.push_back(s); |
| 1891 | } |
| 1892 | assert_eq!(ptr.tokens().count(), input.len()); |
| 1893 | for (idx, s) in input.iter().enumerate().rev() { |
| 1894 | assert_eq!(ptr.tokens().count(), idx + 1); |
| 1895 | assert_eq!(ptr.back().unwrap().decoded(), *s); |
| 1896 | assert_eq!(ptr.pop_back().unwrap().decoded(), *s); |
| 1897 | } |
| 1898 | assert_eq!(ptr.tokens().count(), 0); |
| 1899 | assert!(ptr.back().is_none()); |
| 1900 | assert!(ptr.pop_back().is_none()); |
| 1901 | } |
| 1902 | } |
| 1903 | |
| 1904 | #[test] |
| 1905 | // `clippy::useless_asref` is tripping here because the `as_ref` is being |