| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/assert.h" | 5 #include "platform/assert.h" |
| 6 #include "vm/assembler.h" | 6 #include "vm/assembler.h" |
| 7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
| 8 #include "vm/isolate.h" | 8 #include "vm/isolate.h" |
| 9 #include "vm/object.h" | 9 #include "vm/object.h" |
| 10 #include "vm/object_store.h" | 10 #include "vm/object_store.h" |
| (...skipping 1836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1847 new_array ^= obj.raw(); | 1847 new_array ^= obj.raw(); |
| 1848 EXPECT_EQ(1, new_array.Length()); | 1848 EXPECT_EQ(1, new_array.Length()); |
| 1849 addr += used_size; | 1849 addr += used_size; |
| 1850 obj = RawObject::FromAddr(addr); | 1850 obj = RawObject::FromAddr(addr); |
| 1851 EXPECT(obj.IsArray()); | 1851 EXPECT(obj.IsArray()); |
| 1852 new_array ^= obj.raw(); | 1852 new_array ^= obj.raw(); |
| 1853 EXPECT_EQ(2, new_array.Length()); | 1853 EXPECT_EQ(2, new_array.Length()); |
| 1854 } | 1854 } |
| 1855 | 1855 |
| 1856 | 1856 |
| 1857 TEST_CASE(ExternalByteArray) { |
| 1858 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
| 1859 intptr_t data_length = ARRAY_SIZE(data); |
| 1860 |
| 1861 const ExternalByteArray& array1 = |
| 1862 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1863 data_length, |
| 1864 NULL, |
| 1865 NULL)); |
| 1866 EXPECT(!array1.IsNull()); |
| 1867 EXPECT_EQ(data_length, array1.Length()); |
| 1868 EXPECT_EQ(-3, array1.At<int8_t>(0)); |
| 1869 EXPECT_EQ(253, array1.At<uint8_t>(0)); |
| 1870 EXPECT_EQ(-2, array1.At<int8_t>(1)); |
| 1871 EXPECT_EQ(254, array1.At<uint8_t>(1)); |
| 1872 EXPECT_EQ(-1, array1.At<int8_t>(2)); |
| 1873 EXPECT_EQ(255, array1.At<uint8_t>(2)); |
| 1874 EXPECT_EQ(0, array1.At<int8_t>(3)); |
| 1875 EXPECT_EQ(0, array1.At<uint8_t>(3)); |
| 1876 EXPECT_EQ(1, array1.At<int8_t>(4)); |
| 1877 EXPECT_EQ(1, array1.At<uint8_t>(4)); |
| 1878 EXPECT_EQ(2, array1.At<int8_t>(5)); |
| 1879 EXPECT_EQ(2, array1.At<uint8_t>(5)); |
| 1880 |
| 1881 const ExternalByteArray& array2 = |
| 1882 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1883 data_length, |
| 1884 NULL, |
| 1885 NULL)); |
| 1886 EXPECT(!array1.IsNull()); |
| 1887 EXPECT_EQ(data_length, array2.Length()); |
| 1888 for (intptr_t i = 0 ; i < array1.Length(); ++i) { |
| 1889 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); |
| 1890 } |
| 1891 |
| 1892 array1.SetAt<uint8_t>(0, 123); |
| 1893 array2.SetAt<int8_t>(2, -123); |
| 1894 for (intptr_t i = 0 ; i < array1.Length(); ++i) { |
| 1895 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); |
| 1896 } |
| 1897 } |
| 1898 |
| 1899 |
| 1900 TEST_CASE(ExternalByteArrayAlignedAccess) { |
| 1901 intptr_t length = 16; |
| 1902 uint8_t* data = new uint8_t[length]; |
| 1903 |
| 1904 const ExternalByteArray& array1 = |
| 1905 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1906 length, |
| 1907 NULL, |
| 1908 NULL)); |
| 1909 EXPECT(!array1.IsNull()); |
| 1910 EXPECT_EQ(length, array1.Length()); |
| 1911 |
| 1912 const ExternalByteArray& array2 = |
| 1913 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1914 length, |
| 1915 NULL, |
| 1916 NULL)); |
| 1917 EXPECT(!array2.IsNull()); |
| 1918 EXPECT_EQ(length, array2.Length()); |
| 1919 |
| 1920 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1921 array1.SetAt<float>(0, FLT_MIN); |
| 1922 array1.SetAt<float>(4, FLT_MAX); |
| 1923 EXPECT_EQ(FLT_MIN, array2.At<float>(0)); |
| 1924 EXPECT_EQ(FLT_MAX, array2.At<float>(4)); |
| 1925 |
| 1926 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1927 array1.SetAt<float>(0, 0.0f); |
| 1928 EXPECT_EQ(0.0f, array2.At<float>(0)); |
| 1929 array1.SetAt<float>(4, 1.0f); |
| 1930 EXPECT_EQ(1.0f, array2.At<float>(4)); |
| 1931 |
| 1932 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1933 array1.SetAt<double>(0, DBL_MIN); |
| 1934 EXPECT_EQ(DBL_MIN, array2.At<double>(0)); |
| 1935 array1.SetAt<double>(8, DBL_MAX); |
| 1936 EXPECT_EQ(DBL_MAX, array2.At<double>(8)); |
| 1937 |
| 1938 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1939 array1.SetAt<double>(0, 0.0); |
| 1940 EXPECT_EQ(0.0, array2.At<double>(0)); |
| 1941 array1.SetAt<double>(8, 1.0); |
| 1942 EXPECT_EQ(1.0, array2.At<double>(8)); |
| 1943 |
| 1944 delete[] data; |
| 1945 } |
| 1946 |
| 1947 |
| 1948 TEST_CASE(ExternalByteArrayUnlignedAccess) { |
| 1949 intptr_t length = 24; |
| 1950 uint8_t* data = new uint8_t[length]; |
| 1951 |
| 1952 const ExternalByteArray& array1 = |
| 1953 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1954 length, |
| 1955 NULL, |
| 1956 NULL)); |
| 1957 EXPECT(!array1.IsNull()); |
| 1958 EXPECT_EQ(length, array1.Length()); |
| 1959 |
| 1960 const ExternalByteArray& array2 = |
| 1961 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1962 length, |
| 1963 NULL, |
| 1964 NULL)); |
| 1965 EXPECT(!array2.IsNull()); |
| 1966 EXPECT_EQ(length, array2.Length()); |
| 1967 |
| 1968 int float_misalign = 3; |
| 1969 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1970 array1.SetUnalignedAt<float>(float_misalign, FLT_MIN); |
| 1971 array1.SetUnalignedAt<float>(4 + float_misalign, FLT_MAX); |
| 1972 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(float_misalign)); |
| 1973 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + float_misalign)); |
| 1974 |
| 1975 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1976 array1.SetUnalignedAt<float>(float_misalign, 0.0f); |
| 1977 EXPECT_EQ(0.0f, array2.UnalignedAt<float>(float_misalign)); |
| 1978 array1.SetUnalignedAt<float>(4 + float_misalign, 1.0f); |
| 1979 EXPECT_EQ(1.0f, array2.UnalignedAt<float>(4 + float_misalign)); |
| 1980 |
| 1981 int double_misalign = 5; |
| 1982 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1983 array1.SetUnalignedAt<double>(double_misalign, DBL_MIN); |
| 1984 EXPECT_EQ(DBL_MIN, array2.UnalignedAt<double>(double_misalign)); |
| 1985 array1.SetUnalignedAt<double>(8 + double_misalign, DBL_MAX); |
| 1986 EXPECT_EQ(DBL_MAX, |
| 1987 array2.UnalignedAt<double>(8 + double_misalign)); |
| 1988 |
| 1989 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1990 array1.SetUnalignedAt<double>(double_misalign, 0.0); |
| 1991 EXPECT_EQ(0.0, array2.UnalignedAt<double>(double_misalign)); |
| 1992 array1.SetUnalignedAt<double>(8 + double_misalign, 1.0); |
| 1993 EXPECT_EQ(1.0, array2.UnalignedAt<double>(8 + double_misalign)); |
| 1994 |
| 1995 delete[] data; |
| 1996 } |
| 1997 |
| 1998 |
| 1999 TEST_CASE(ExternalByteArraySkewedUnalignedBaseAccess) { |
| 2000 intptr_t length = 24; |
| 2001 uint8_t* data = new uint8_t[length]; |
| 2002 |
| 2003 int skew = 2; |
| 2004 |
| 2005 const ExternalByteArray& array1 = |
| 2006 ExternalByteArray::Handle(ExternalByteArray::New(data + 3, |
| 2007 length, |
| 2008 NULL, |
| 2009 NULL)); |
| 2010 EXPECT(!array1.IsNull()); |
| 2011 EXPECT_EQ(length, array1.Length()); |
| 2012 |
| 2013 const ExternalByteArray& array2 = |
| 2014 ExternalByteArray::Handle(ExternalByteArray::New(data + 1, |
| 2015 length, |
| 2016 NULL, |
| 2017 NULL)); |
| 2018 EXPECT(!array2.IsNull()); |
| 2019 EXPECT_EQ(length, array2.Length()); |
| 2020 |
| 2021 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 2022 array1.SetUnalignedAt<float>(0, FLT_MIN); |
| 2023 array1.SetUnalignedAt<float>(4, FLT_MAX); |
| 2024 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(0 + skew)); |
| 2025 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + skew)); |
| 2026 |
| 2027 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 2028 array1.SetUnalignedAt<float>(0, 0.0f); |
| 2029 EXPECT_EQ(0.0f, array2.UnalignedAt<float>(0 + skew)); |
| 2030 array2.SetUnalignedAt<float>(4 + skew, 1.0f); |
| 2031 EXPECT_EQ(1.0f, array1.UnalignedAt<float>(4)); |
| 2032 |
| 2033 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 2034 array1.SetUnalignedAt<double>(0, DBL_MIN); |
| 2035 EXPECT_EQ(DBL_MIN, array2.UnalignedAt<double>(0 + skew)); |
| 2036 array2.SetUnalignedAt<double>(8 + skew, DBL_MAX); |
| 2037 EXPECT_EQ(DBL_MAX, array1.UnalignedAt<double>(8)); |
| 2038 |
| 2039 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 2040 array1.SetUnalignedAt<double>(0, 0.0); |
| 2041 EXPECT_EQ(0.0, array2.UnalignedAt<double>(0 + skew)); |
| 2042 array2.SetUnalignedAt<double>(8 + skew, 1.0); |
| 2043 EXPECT_EQ(1.0, array1.UnalignedAt<double>(8)); |
| 2044 |
| 2045 delete[] data; |
| 2046 } |
| 2047 |
| 2048 |
| 2049 TEST_CASE(ExternalByteArrayCopy) { |
| 2050 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
| 2051 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; |
| 2052 |
| 2053 uint8_t data[] = { 0, 1, 2, 3 }; |
| 2054 const ExternalByteArray& external = |
| 2055 ExternalByteArray::Handle( |
| 2056 ExternalByteArray::New(data, ARRAY_SIZE(data), NULL, NULL)); |
| 2057 EXPECT(!external.IsNull()); |
| 2058 EXPECT_EQ(4, external.Length()); |
| 2059 EXPECT_EQ(0, external.At<uint8_t>(0)); |
| 2060 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2061 EXPECT_EQ(2, external.At<uint8_t>(2)); |
| 2062 EXPECT_EQ(3, external.At<uint8_t>(3)); |
| 2063 |
| 2064 // A zero length copy. |
| 2065 ByteArray::Copy(external, 0, b_4_5_6_7, 0); |
| 2066 EXPECT_EQ(0, external.At<uint8_t>(0)); |
| 2067 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2068 EXPECT_EQ(2, external.At<uint8_t>(2)); |
| 2069 EXPECT_EQ(3, external.At<uint8_t>(3)); |
| 2070 |
| 2071 // Another zero length copy. |
| 2072 ByteArray::Copy(external, 4, b_4_5_6_7, 0); |
| 2073 EXPECT_EQ(0, external.At<uint8_t>(0)); |
| 2074 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2075 EXPECT_EQ(2, external.At<uint8_t>(2)); |
| 2076 EXPECT_EQ(3, external.At<uint8_t>(3)); |
| 2077 |
| 2078 // A one element copy. |
| 2079 ByteArray::Copy(external, 0, b_4_5_6_7, 1); |
| 2080 EXPECT_EQ(4, external.At<uint8_t>(0)); |
| 2081 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2082 EXPECT_EQ(2, external.At<uint8_t>(2)); |
| 2083 EXPECT_EQ(3, external.At<uint8_t>(3)); |
| 2084 |
| 2085 // A two element copy. |
| 2086 ByteArray::Copy(external, 2, b_4_5_6_7, 2); |
| 2087 EXPECT_EQ(4, external.At<uint8_t>(0)); |
| 2088 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2089 EXPECT_EQ(4, external.At<uint8_t>(2)); |
| 2090 EXPECT_EQ(5, external.At<uint8_t>(3)); |
| 2091 |
| 2092 // A three element copy. |
| 2093 ByteArray::Copy(external, 1, b_4_5_6_7, 3); |
| 2094 EXPECT_EQ(4, external.At<uint8_t>(0)); |
| 2095 EXPECT_EQ(4, external.At<uint8_t>(1)); |
| 2096 EXPECT_EQ(5, external.At<uint8_t>(2)); |
| 2097 EXPECT_EQ(6, external.At<uint8_t>(3)); |
| 2098 |
| 2099 // A four element copy. |
| 2100 ByteArray::Copy(external, 0, b_0_1_2_3, 4); |
| 2101 EXPECT_EQ(0, external.At<uint8_t>(0)); |
| 2102 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2103 EXPECT_EQ(2, external.At<uint8_t>(2)); |
| 2104 EXPECT_EQ(3, external.At<uint8_t>(3)); |
| 2105 } |
| 2106 |
| 2107 |
| 1857 TEST_CASE(InternalByteArray) { | 2108 TEST_CASE(InternalByteArray) { |
| 1858 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 2109 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
| 1859 intptr_t data_length = ARRAY_SIZE(data); | 2110 intptr_t data_length = ARRAY_SIZE(data); |
| 1860 | 2111 |
| 1861 const Int8Array& int8_array = | 2112 const InternalByteArray& array1 = |
| 1862 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), | 2113 InternalByteArray::Handle(InternalByteArray::New(data, data_length)); |
| 1863 data_length)); | 2114 EXPECT(!array1.IsNull()); |
| 1864 EXPECT(!int8_array.IsNull()); | 2115 EXPECT_EQ(data_length, array1.Length()); |
| 1865 EXPECT_EQ(data_length, int8_array.Length()); | 2116 EXPECT_EQ(-3, array1.At<int8_t>(0)); |
| 1866 | 2117 EXPECT_EQ(253, array1.At<uint8_t>(0)); |
| 1867 EXPECT_EQ(-3, int8_array.At(0)); | 2118 EXPECT_EQ(-2, array1.At<int8_t>(1)); |
| 1868 uint8_t at_0; | 2119 EXPECT_EQ(254, array1.At<uint8_t>(1)); |
| 1869 ByteArray::Copy(&at_0, int8_array, 0, sizeof(at_0)); | 2120 EXPECT_EQ(-1, array1.At<int8_t>(2)); |
| 1870 EXPECT_EQ(253, at_0); | 2121 EXPECT_EQ(255, array1.At<uint8_t>(2)); |
| 1871 | 2122 EXPECT_EQ(0, array1.At<int8_t>(3)); |
| 1872 EXPECT_EQ(-2, int8_array.At(1)); | 2123 EXPECT_EQ(0, array1.At<uint8_t>(3)); |
| 1873 uint8_t at_1; | 2124 EXPECT_EQ(1, array1.At<int8_t>(4)); |
| 1874 ByteArray::Copy(&at_1, int8_array, 1, sizeof(at_1)); | 2125 EXPECT_EQ(1, array1.At<uint8_t>(4)); |
| 1875 EXPECT_EQ(254, at_1); | 2126 EXPECT_EQ(2, array1.At<int8_t>(5)); |
| 1876 | 2127 EXPECT_EQ(2, array1.At<uint8_t>(5)); |
| 1877 EXPECT_EQ(-1, int8_array.At(2)); | 2128 |
| 1878 uint8_t at_2; | 2129 const InternalByteArray& array2 = |
| 1879 ByteArray::Copy(&at_2, int8_array, 2, sizeof(at_2)); | 2130 InternalByteArray::Handle(InternalByteArray::New(data, data_length)); |
| 1880 EXPECT_EQ(255, at_2); | 2131 EXPECT(!array1.IsNull()); |
| 1881 | 2132 EXPECT_EQ(data_length, array2.Length()); |
| 1882 EXPECT_EQ(0, int8_array.At(3)); | 2133 for (intptr_t i = 0; i < array1.Length(); ++i) { |
| 1883 uint8_t at_3; | 2134 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); |
| 1884 ByteArray::Copy(&at_3, int8_array, 3, sizeof(at_3)); | |
| 1885 EXPECT_EQ(0, at_3); | |
| 1886 | |
| 1887 EXPECT_EQ(1, int8_array.At(4)); | |
| 1888 uint8_t at_4; | |
| 1889 ByteArray::Copy(&at_4, int8_array, 4, sizeof(at_4)); | |
| 1890 EXPECT_EQ(1, at_4); | |
| 1891 | |
| 1892 EXPECT_EQ(2, int8_array.At(5)); | |
| 1893 uint8_t at_5; | |
| 1894 ByteArray::Copy(&at_5, int8_array, 5, sizeof(at_5)); | |
| 1895 EXPECT_EQ(2, at_5); | |
| 1896 | |
| 1897 EXPECT_EQ(3, int8_array.At(6)); | |
| 1898 uint8_t at_6; | |
| 1899 ByteArray::Copy(&at_6, int8_array, 6, sizeof(at_6)); | |
| 1900 EXPECT_EQ(3, at_6); | |
| 1901 | |
| 1902 EXPECT_EQ(4, int8_array.At(7)); | |
| 1903 uint8_t at_7; | |
| 1904 ByteArray::Copy(&at_7, int8_array, 7, sizeof(at_7)); | |
| 1905 EXPECT_EQ(4, at_7); | |
| 1906 | |
| 1907 const Int8Array& int8_array2 = | |
| 1908 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), | |
| 1909 data_length)); | |
| 1910 EXPECT(!int8_array.IsNull()); | |
| 1911 EXPECT_EQ(data_length, int8_array.Length()); | |
| 1912 | |
| 1913 for (intptr_t i = 0; i < data_length; ++i) { | |
| 1914 EXPECT_EQ(int8_array.At(i), int8_array2.At(i)); | |
| 1915 } | 2135 } |
| 1916 for (intptr_t i = 0; i < data_length; ++i) { | 2136 |
| 1917 int8_array.SetAt(i, 123 + i); | 2137 array1.SetAt<uint8_t>(0, 123); |
| 2138 array2.SetAt<int8_t>(2, -123); |
| 2139 |
| 2140 EXPECT(array1.At<uint8_t>(0) != array2.At<uint8_t>(0)); |
| 2141 EXPECT(array1.At<uint8_t>(1) == array2.At<uint8_t>(1)); |
| 2142 EXPECT(array1.At<uint8_t>(2) != array2.At<uint8_t>(2)); |
| 2143 for (intptr_t i = 3; i < array1.Length(); ++i) { |
| 2144 EXPECT(array1.At<uint8_t>(i) == array2.At<uint8_t>(i)); |
| 1918 } | 2145 } |
| 1919 for (intptr_t i = 0; i < data_length; ++i) { | 2146 } |
| 1920 EXPECT(int8_array.At(i) != int8_array2.At(i)); | 2147 |
| 1921 } | 2148 |
| 1922 } | 2149 TEST_CASE(InternalByteArrayAlignedAccess) { |
| 1923 | 2150 const intptr_t length = 16; |
| 1924 | 2151 const InternalByteArray& byte_array = |
| 1925 TEST_CASE(ExternalByteArray) { | 2152 InternalByteArray::Handle(InternalByteArray::New(length)); |
| 1926 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 2153 EXPECT(!byte_array.IsNull()); |
| 1927 intptr_t data_length = ARRAY_SIZE(data); | 2154 EXPECT_EQ(length, byte_array.Length()); |
| 1928 | 2155 |
| 1929 const ExternalInt8Array& int8_array = | 2156 byte_array.SetAt<float>(0, FLT_MIN); |
| 1930 ExternalInt8Array::Handle( | 2157 byte_array.SetAt<float>(4, FLT_MAX); |
| 1931 ExternalInt8Array::New(reinterpret_cast<int8_t*>(data), | 2158 EXPECT_EQ(FLT_MIN, byte_array.At<float>(0)); |
| 1932 data_length, NULL, NULL)); | 2159 EXPECT_EQ(FLT_MAX, byte_array.At<float>(4)); |
| 1933 EXPECT(!int8_array.IsNull()); | 2160 |
| 1934 EXPECT_EQ(data_length, int8_array.Length()); | 2161 byte_array.SetAt<float>(0, 0.0f); |
| 1935 | 2162 EXPECT_EQ(0.0f, byte_array.At<float>(0)); |
| 1936 const ExternalUint8Array& uint8_array = | 2163 byte_array.SetAt<float>(4, 1.0f); |
| 1937 ExternalUint8Array::Handle( | 2164 EXPECT_EQ(1.0f, byte_array.At<float>(4)); |
| 1938 ExternalUint8Array::New(data, data_length, NULL, NULL)); | 2165 |
| 1939 EXPECT(!uint8_array.IsNull()); | 2166 byte_array.SetAt<double>(0, DBL_MIN); |
| 1940 EXPECT_EQ(data_length, uint8_array.Length()); | 2167 EXPECT_EQ(DBL_MIN, byte_array.At<double>(0)); |
| 1941 | 2168 byte_array.SetAt<double>(8, DBL_MAX); |
| 1942 EXPECT_EQ(-3, int8_array.At(0)); | 2169 EXPECT_EQ(DBL_MAX, byte_array.At<double>(8)); |
| 1943 EXPECT_EQ(253, uint8_array.At(0)); | 2170 |
| 1944 | 2171 byte_array.SetAt<double>(0, 0.0); |
| 1945 EXPECT_EQ(-2, int8_array.At(1)); | 2172 EXPECT_EQ(0.0, byte_array.At<double>(0)); |
| 1946 EXPECT_EQ(254, uint8_array.At(1)); | 2173 byte_array.SetAt<double>(8, 1.0); |
| 1947 | 2174 EXPECT_EQ(1.0, byte_array.At<double>(8)); |
| 1948 EXPECT_EQ(-1, int8_array.At(2)); | 2175 } |
| 1949 EXPECT_EQ(255, uint8_array.At(2)); | 2176 |
| 1950 | 2177 |
| 1951 EXPECT_EQ(0, int8_array.At(3)); | 2178 TEST_CASE(InternalByteArrayUnlignedAccess) { |
| 1952 EXPECT_EQ(0, uint8_array.At(3)); | 2179 const intptr_t length = 24; |
| 1953 | 2180 const InternalByteArray& byte_array = |
| 1954 EXPECT_EQ(1, int8_array.At(4)); | 2181 InternalByteArray::Handle(InternalByteArray::New(length)); |
| 1955 EXPECT_EQ(1, uint8_array.At(4)); | 2182 EXPECT(!byte_array.IsNull()); |
| 1956 | 2183 EXPECT_EQ(length, byte_array.Length()); |
| 1957 EXPECT_EQ(2, int8_array.At(5)); | 2184 |
| 1958 EXPECT_EQ(2, uint8_array.At(5)); | 2185 int float_misalign = 3; |
| 1959 | 2186 byte_array.SetUnalignedAt<float>(float_misalign, FLT_MIN); |
| 1960 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 2187 byte_array.SetUnalignedAt<float>(4 + float_misalign, FLT_MAX); |
| 1961 uint8_t value = 0; | 2188 EXPECT_EQ(FLT_MIN, byte_array.UnalignedAt<float>(float_misalign)); |
| 1962 ByteArray::Copy(&value, int8_array, i, sizeof(value)); | 2189 EXPECT_EQ(FLT_MAX, byte_array.UnalignedAt<float>(4 + float_misalign)); |
| 1963 EXPECT_EQ(value, uint8_array.At(i)); | 2190 |
| 1964 } | 2191 byte_array.SetUnalignedAt<float>(float_misalign, 0.0f); |
| 1965 | 2192 EXPECT_EQ(0.0f, byte_array.UnalignedAt<float>(float_misalign)); |
| 1966 int8_array.SetAt(2, -123); | 2193 byte_array.SetUnalignedAt<float>(4 + float_misalign, 1.0f); |
| 1967 uint8_array.SetAt(0, 123); | 2194 EXPECT_EQ(1.0f, byte_array.UnalignedAt<float>(4 + float_misalign)); |
| 1968 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 2195 |
| 1969 int8_t value = 0; | 2196 int double_misalign = 5; |
| 1970 ByteArray::Copy(&value, uint8_array, i, sizeof(value)); | 2197 byte_array.SetUnalignedAt<double>(double_misalign, DBL_MIN); |
| 1971 EXPECT_EQ(int8_array.At(i), value); | 2198 EXPECT_EQ(DBL_MIN, byte_array.UnalignedAt<double>(double_misalign)); |
| 1972 } | 2199 byte_array.SetUnalignedAt<double>(8 + double_misalign, DBL_MAX); |
| 1973 } | 2200 EXPECT_EQ(DBL_MAX, |
| 1974 | 2201 byte_array.UnalignedAt<double>(8 + double_misalign)); |
| 1975 | 2202 |
| 1976 TEST_CASE(ByteArrayCopyInternal) { | 2203 byte_array.SetUnalignedAt<double>(double_misalign, 0.0); |
| 2204 EXPECT_EQ(0.0, byte_array.UnalignedAt<double>(double_misalign)); |
| 2205 byte_array.SetUnalignedAt<double>(8 + double_misalign, 1.0); |
| 2206 EXPECT_EQ(1.0, byte_array.UnalignedAt<double>(8 + double_misalign)); |
| 2207 } |
| 2208 |
| 2209 |
| 2210 TEST_CASE(InternalByteArrayCopy) { |
| 1977 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 2211 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
| 1978 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | 2212 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; |
| 1979 | 2213 |
| 1980 const Uint8Array& internal = | 2214 const InternalByteArray& internal = |
| 1981 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | 2215 InternalByteArray::Handle( |
| 2216 InternalByteArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); |
| 1982 EXPECT(!internal.IsNull()); | 2217 EXPECT(!internal.IsNull()); |
| 1983 EXPECT_EQ(4, internal.Length()); | 2218 EXPECT_EQ(4, internal.Length()); |
| 1984 EXPECT_EQ(0, internal.At(0)); | 2219 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 1985 EXPECT_EQ(1, internal.At(1)); | 2220 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 1986 EXPECT_EQ(2, internal.At(2)); | 2221 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 1987 EXPECT_EQ(3, internal.At(3)); | 2222 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 1988 | 2223 |
| 1989 // A zero length copy. | 2224 // A zero length copy. |
| 1990 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); | 2225 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); |
| 1991 EXPECT_EQ(0, internal.At(0)); | 2226 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 1992 EXPECT_EQ(1, internal.At(1)); | 2227 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 1993 EXPECT_EQ(2, internal.At(2)); | 2228 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 1994 EXPECT_EQ(3, internal.At(3)); | 2229 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 1995 | 2230 |
| 1996 // Another zero length copy. | 2231 // Another zero length copy. |
| 1997 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); | 2232 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); |
| 1998 EXPECT_EQ(0, internal.At(0)); | 2233 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 1999 EXPECT_EQ(1, internal.At(1)); | 2234 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2000 EXPECT_EQ(2, internal.At(2)); | 2235 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2001 EXPECT_EQ(3, internal.At(3)); | 2236 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2002 | 2237 |
| 2003 // A one element copy. | 2238 // A one element copy. |
| 2004 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); | 2239 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); |
| 2005 EXPECT_EQ(4, internal.At(0)); | 2240 EXPECT_EQ(4, internal.At<uint8_t>(0)); |
| 2006 EXPECT_EQ(1, internal.At(1)); | 2241 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2007 EXPECT_EQ(2, internal.At(2)); | 2242 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2008 EXPECT_EQ(3, internal.At(3)); | 2243 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2009 | 2244 |
| 2010 // A two element copy. | 2245 // A two element copy. |
| 2011 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); | 2246 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); |
| 2012 EXPECT_EQ(4, internal.At(0)); | 2247 EXPECT_EQ(4, internal.At<uint8_t>(0)); |
| 2013 EXPECT_EQ(1, internal.At(1)); | 2248 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2014 EXPECT_EQ(4, internal.At(2)); | 2249 EXPECT_EQ(4, internal.At<uint8_t>(2)); |
| 2015 EXPECT_EQ(5, internal.At(3)); | 2250 EXPECT_EQ(5, internal.At<uint8_t>(3)); |
| 2016 | 2251 |
| 2017 // A three element copy. | 2252 // A three element copy. |
| 2018 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); | 2253 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); |
| 2019 EXPECT_EQ(4, internal.At(0)); | 2254 EXPECT_EQ(4, internal.At<uint8_t>(0)); |
| 2020 EXPECT_EQ(4, internal.At(1)); | 2255 EXPECT_EQ(4, internal.At<uint8_t>(1)); |
| 2021 EXPECT_EQ(5, internal.At(2)); | 2256 EXPECT_EQ(5, internal.At<uint8_t>(2)); |
| 2022 EXPECT_EQ(6, internal.At(3)); | 2257 EXPECT_EQ(6, internal.At<uint8_t>(3)); |
| 2023 | 2258 |
| 2024 // A four element copy. | 2259 // A four element copy. |
| 2025 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); | 2260 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); |
| 2026 EXPECT_EQ(0, internal.At(0)); | 2261 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 2027 EXPECT_EQ(1, internal.At(1)); | 2262 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2028 EXPECT_EQ(2, internal.At(2)); | 2263 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2029 EXPECT_EQ(3, internal.At(3)); | 2264 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2030 } | 2265 } |
| 2031 | 2266 |
| 2032 | 2267 |
| 2033 TEST_CASE(ByteArrayCopyExternal) { | 2268 TEST_CASE(ByteArrayCopy) { |
| 2034 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 2269 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
| 2035 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | 2270 |
| 2036 | 2271 const InternalByteArray& internal = |
| 2037 uint8_t data[] = { 0, 1, 2, 3 }; | 2272 InternalByteArray::Handle( |
| 2038 const ExternalUint8Array& external = | 2273 InternalByteArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); |
| 2039 ExternalUint8Array::Handle( | 2274 EXPECT(!internal.IsNull()); |
| 2040 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); | 2275 EXPECT_EQ(4, internal.Length()); |
| 2276 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 2277 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2278 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2279 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2280 |
| 2281 uint8_t data[] = { 4, 5, 6, 7 }; |
| 2282 const ExternalByteArray& external = |
| 2283 ExternalByteArray::Handle( |
| 2284 ExternalByteArray::New(data, ARRAY_SIZE(data), NULL, NULL)); |
| 2041 EXPECT(!external.IsNull()); | 2285 EXPECT(!external.IsNull()); |
| 2042 EXPECT_EQ(4, external.Length()); | 2286 EXPECT_EQ(4, external.Length()); |
| 2043 EXPECT_EQ(0, external.At(0)); | 2287 EXPECT_EQ(4, external.At<uint8_t>(0)); |
| 2044 EXPECT_EQ(1, external.At(1)); | 2288 EXPECT_EQ(5, external.At<uint8_t>(1)); |
| 2045 EXPECT_EQ(2, external.At(2)); | 2289 EXPECT_EQ(6, external.At<uint8_t>(2)); |
| 2046 EXPECT_EQ(3, external.At(3)); | 2290 EXPECT_EQ(7, external.At<uint8_t>(3)); |
| 2047 | |
| 2048 // A zero length copy. | |
| 2049 ByteArray::Copy(external, 0, b_4_5_6_7, 0); | |
| 2050 EXPECT_EQ(0, external.At(0)); | |
| 2051 EXPECT_EQ(1, external.At(1)); | |
| 2052 EXPECT_EQ(2, external.At(2)); | |
| 2053 EXPECT_EQ(3, external.At(3)); | |
| 2054 | |
| 2055 // Another zero length copy. | |
| 2056 ByteArray::Copy(external, 4, b_4_5_6_7, 0); | |
| 2057 EXPECT_EQ(0, external.At(0)); | |
| 2058 EXPECT_EQ(1, external.At(1)); | |
| 2059 EXPECT_EQ(2, external.At(2)); | |
| 2060 EXPECT_EQ(3, external.At(3)); | |
| 2061 | |
| 2062 // A one element copy. | |
| 2063 ByteArray::Copy(external, 0, b_4_5_6_7, 1); | |
| 2064 EXPECT_EQ(4, external.At(0)); | |
| 2065 EXPECT_EQ(1, external.At(1)); | |
| 2066 EXPECT_EQ(2, external.At(2)); | |
| 2067 EXPECT_EQ(3, external.At(3)); | |
| 2068 | |
| 2069 // A two element copy. | |
| 2070 ByteArray::Copy(external, 2, b_4_5_6_7, 2); | |
| 2071 EXPECT_EQ(4, external.At(0)); | |
| 2072 EXPECT_EQ(1, external.At(1)); | |
| 2073 EXPECT_EQ(4, external.At(2)); | |
| 2074 EXPECT_EQ(5, external.At(3)); | |
| 2075 | |
| 2076 // A three element copy. | |
| 2077 ByteArray::Copy(external, 1, b_4_5_6_7, 3); | |
| 2078 EXPECT_EQ(4, external.At(0)); | |
| 2079 EXPECT_EQ(4, external.At(1)); | |
| 2080 EXPECT_EQ(5, external.At(2)); | |
| 2081 EXPECT_EQ(6, external.At(3)); | |
| 2082 | |
| 2083 // A four element copy. | |
| 2084 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
| 2085 EXPECT_EQ(0, external.At(0)); | |
| 2086 EXPECT_EQ(1, external.At(1)); | |
| 2087 EXPECT_EQ(2, external.At(2)); | |
| 2088 EXPECT_EQ(3, external.At(3)); | |
| 2089 } | |
| 2090 | |
| 2091 | |
| 2092 TEST_CASE(ByteArrayCopyInternalExternal) { | |
| 2093 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 2094 | |
| 2095 const Uint8Array& internal = | |
| 2096 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
| 2097 EXPECT(!internal.IsNull()); | |
| 2098 EXPECT_EQ(4, internal.Length()); | |
| 2099 EXPECT_EQ(0, internal.At(0)); | |
| 2100 EXPECT_EQ(1, internal.At(1)); | |
| 2101 EXPECT_EQ(2, internal.At(2)); | |
| 2102 EXPECT_EQ(3, internal.At(3)); | |
| 2103 | |
| 2104 uint8_t data[] = { 4, 5, 6, 7 }; | |
| 2105 const ExternalUint8Array& external = | |
| 2106 ExternalUint8Array::Handle( | |
| 2107 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); | |
| 2108 EXPECT(!external.IsNull()); | |
| 2109 EXPECT_EQ(4, external.Length()); | |
| 2110 EXPECT_EQ(4, external.At(0)); | |
| 2111 EXPECT_EQ(5, external.At(1)); | |
| 2112 EXPECT_EQ(6, external.At(2)); | |
| 2113 EXPECT_EQ(7, external.At(3)); | |
| 2114 | 2291 |
| 2115 // A zero length copy. | 2292 // A zero length copy. |
| 2116 ByteArray::Copy(internal, 0, external, 0, 0); | 2293 ByteArray::Copy(internal, 0, external, 0, 0); |
| 2117 EXPECT_EQ(0, internal.At(0)); | 2294 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 2118 EXPECT_EQ(1, internal.At(1)); | 2295 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2119 EXPECT_EQ(2, internal.At(2)); | 2296 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2120 EXPECT_EQ(3, internal.At(3)); | 2297 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2121 | 2298 |
| 2122 // A zero length copy, take 2. | 2299 // A zero length copy, take 2. |
| 2123 ByteArray::Copy(internal, 4, external, 0, 0); | 2300 ByteArray::Copy(internal, 4, external, 0, 0); |
| 2124 EXPECT_EQ(0, internal.At(0)); | 2301 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 2125 EXPECT_EQ(1, internal.At(1)); | 2302 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2126 EXPECT_EQ(2, internal.At(2)); | 2303 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2127 EXPECT_EQ(3, internal.At(3)); | 2304 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2128 | 2305 |
| 2129 // A zero length copy, take 3. | 2306 // A zero length copy, take 3. |
| 2130 ByteArray::Copy(internal, 0, external, 4, 0); | 2307 ByteArray::Copy(internal, 0, external, 4, 0); |
| 2131 EXPECT_EQ(0, internal.At(0)); | 2308 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 2132 EXPECT_EQ(1, internal.At(1)); | 2309 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2133 EXPECT_EQ(2, internal.At(2)); | 2310 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2134 EXPECT_EQ(3, internal.At(3)); | 2311 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2135 | 2312 |
| 2136 // A zero length copy, take 4. | 2313 // A zero length copy, take 4. |
| 2137 ByteArray::Copy(internal, 4, external, 4, 0); | 2314 ByteArray::Copy(internal, 4, external, 4, 0); |
| 2138 EXPECT_EQ(0, internal.At(0)); | 2315 EXPECT_EQ(0, internal.At<uint8_t>(0)); |
| 2139 EXPECT_EQ(1, internal.At(1)); | 2316 EXPECT_EQ(1, internal.At<uint8_t>(1)); |
| 2140 EXPECT_EQ(2, internal.At(2)); | 2317 EXPECT_EQ(2, internal.At<uint8_t>(2)); |
| 2141 EXPECT_EQ(3, internal.At(3)); | 2318 EXPECT_EQ(3, internal.At<uint8_t>(3)); |
| 2142 | 2319 |
| 2143 // A four element copy. | 2320 // A four element copy. |
| 2144 ByteArray::Copy(internal, 0, external, 0, 4); | 2321 ByteArray::Copy(internal, 0, external, 0, 4); |
| 2145 EXPECT_EQ(4, internal.At(0)); | 2322 EXPECT_EQ(4, internal.At<uint8_t>(0)); |
| 2146 EXPECT_EQ(5, internal.At(1)); | 2323 EXPECT_EQ(5, internal.At<uint8_t>(1)); |
| 2147 EXPECT_EQ(6, internal.At(2)); | 2324 EXPECT_EQ(6, internal.At<uint8_t>(2)); |
| 2148 EXPECT_EQ(7, internal.At(3)); | 2325 EXPECT_EQ(7, internal.At<uint8_t>(3)); |
| 2149 EXPECT_EQ(4, external.At(0)); | 2326 EXPECT_EQ(4, external.At<uint8_t>(0)); |
| 2150 EXPECT_EQ(5, external.At(1)); | 2327 EXPECT_EQ(5, external.At<uint8_t>(1)); |
| 2151 EXPECT_EQ(6, external.At(2)); | 2328 EXPECT_EQ(6, external.At<uint8_t>(2)); |
| 2152 EXPECT_EQ(7, external.At(3)); | 2329 EXPECT_EQ(7, external.At<uint8_t>(3)); |
| 2153 | 2330 |
| 2154 // A four element copy, take 2. | 2331 // A four element copy, take 2. |
| 2155 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | 2332 ByteArray::Copy(external, 0, b_0_1_2_3, 4); |
| 2156 EXPECT_EQ(0, external.At(0)); | 2333 EXPECT_EQ(0, external.At<uint8_t>(0)); |
| 2157 EXPECT_EQ(1, external.At(1)); | 2334 EXPECT_EQ(1, external.At<uint8_t>(1)); |
| 2158 EXPECT_EQ(2, external.At(2)); | 2335 EXPECT_EQ(2, external.At<uint8_t>(2)); |
| 2159 EXPECT_EQ(3, external.At(3)); | 2336 EXPECT_EQ(3, external.At<uint8_t>(3)); |
| 2160 ByteArray::Copy(external, 0, internal, 0, 4); | 2337 ByteArray::Copy(external, 0, internal, 0, 4); |
| 2161 EXPECT_EQ(4, internal.At(0)); | 2338 EXPECT_EQ(4, internal.At<uint8_t>(0)); |
| 2162 EXPECT_EQ(5, internal.At(1)); | 2339 EXPECT_EQ(5, internal.At<uint8_t>(1)); |
| 2163 EXPECT_EQ(6, internal.At(2)); | 2340 EXPECT_EQ(6, internal.At<uint8_t>(2)); |
| 2164 EXPECT_EQ(7, internal.At(3)); | 2341 EXPECT_EQ(7, internal.At<uint8_t>(3)); |
| 2165 EXPECT_EQ(4, external.At(0)); | 2342 EXPECT_EQ(4, external.At<uint8_t>(0)); |
| 2166 EXPECT_EQ(5, external.At(1)); | 2343 EXPECT_EQ(5, external.At<uint8_t>(1)); |
| 2167 EXPECT_EQ(6, external.At(2)); | 2344 EXPECT_EQ(6, external.At<uint8_t>(2)); |
| 2168 EXPECT_EQ(7, external.At(3)); | 2345 EXPECT_EQ(7, external.At<uint8_t>(3)); |
| 2169 } | 2346 } |
| 2170 | 2347 |
| 2171 | 2348 |
| 2172 TEST_CASE(Script) { | 2349 TEST_CASE(Script) { |
| 2173 const char* url_chars = "builtin:test-case"; | 2350 const char* url_chars = "builtin:test-case"; |
| 2174 const char* source_chars = "This will not compile."; | 2351 const char* source_chars = "This will not compile."; |
| 2175 const String& url = String::Handle(String::New(url_chars)); | 2352 const String& url = String::Handle(String::New(url_chars)); |
| 2176 const String& source = String::Handle(String::New(source_chars)); | 2353 const String& source = String::Handle(String::New(source_chars)); |
| 2177 const Script& script = Script::Handle(Script::New(url, | 2354 const Script& script = Script::Handle(Script::New(url, |
| 2178 source, | 2355 source, |
| 2179 RawScript::kSource)); | 2356 RawScript::kSource)); |
| 2180 EXPECT(!script.IsNull()); | 2357 EXPECT(!script.IsNull()); |
| 2181 EXPECT(script.IsScript()); | 2358 EXPECT(script.IsScript()); |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2645 cache.GetCheck(0, &test_class, &test_targ_0, &test_targ_1, &test_result); | 2822 cache.GetCheck(0, &test_class, &test_targ_0, &test_targ_1, &test_result); |
| 2646 EXPECT_EQ(empty_class.raw(), test_class.raw()); | 2823 EXPECT_EQ(empty_class.raw(), test_class.raw()); |
| 2647 EXPECT_EQ(targ_0.raw(), test_targ_0.raw()); | 2824 EXPECT_EQ(targ_0.raw(), test_targ_0.raw()); |
| 2648 EXPECT_EQ(targ_1.raw(), test_targ_1.raw()); | 2825 EXPECT_EQ(targ_1.raw(), test_targ_1.raw()); |
| 2649 EXPECT_EQ(Bool::True(), test_result.raw()); | 2826 EXPECT_EQ(Bool::True(), test_result.raw()); |
| 2650 } | 2827 } |
| 2651 | 2828 |
| 2652 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 2829 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 2653 | 2830 |
| 2654 } // namespace dart | 2831 } // namespace dart |
| OLD | NEW |