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/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
9 #include "vm/isolate.h" | 9 #include "vm/isolate.h" |
10 #include "vm/object.h" | 10 #include "vm/object.h" |
(...skipping 1881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1892 data_length, NULL, NULL)); | 1892 data_length, NULL, NULL)); |
1893 EXPECT(!int8_array.IsNull()); | 1893 EXPECT(!int8_array.IsNull()); |
1894 EXPECT_EQ(data_length, int8_array.Length()); | 1894 EXPECT_EQ(data_length, int8_array.Length()); |
1895 | 1895 |
1896 const ExternalUint8Array& uint8_array = | 1896 const ExternalUint8Array& uint8_array = |
1897 ExternalUint8Array::Handle( | 1897 ExternalUint8Array::Handle( |
1898 ExternalUint8Array::New(data, data_length, NULL, NULL)); | 1898 ExternalUint8Array::New(data, data_length, NULL, NULL)); |
1899 EXPECT(!uint8_array.IsNull()); | 1899 EXPECT(!uint8_array.IsNull()); |
1900 EXPECT_EQ(data_length, uint8_array.Length()); | 1900 EXPECT_EQ(data_length, uint8_array.Length()); |
1901 | 1901 |
1902 const ExternalUint8ClampedArray& uint8_clamped_array = | |
1903 ExternalUint8ClampedArray::Handle( | |
1904 ExternalUint8ClampedArray::New(data, data_length, NULL, NULL)); | |
1905 EXPECT(!uint8_clamped_array.IsNull()); | |
1906 EXPECT_EQ(data_length, uint8_clamped_array.Length()); | |
1907 | |
1902 EXPECT_EQ(-3, int8_array.At(0)); | 1908 EXPECT_EQ(-3, int8_array.At(0)); |
1903 EXPECT_EQ(253, uint8_array.At(0)); | 1909 EXPECT_EQ(253, uint8_array.At(0)); |
1910 EXPECT_EQ(253, uint8_clamped_array.At(0)); | |
1904 | 1911 |
1905 EXPECT_EQ(-2, int8_array.At(1)); | 1912 EXPECT_EQ(-2, int8_array.At(1)); |
1906 EXPECT_EQ(254, uint8_array.At(1)); | 1913 EXPECT_EQ(254, uint8_array.At(1)); |
1914 EXPECT_EQ(254, uint8_clamped_array.At(1)); | |
1907 | 1915 |
1908 EXPECT_EQ(-1, int8_array.At(2)); | 1916 EXPECT_EQ(-1, int8_array.At(2)); |
1909 EXPECT_EQ(255, uint8_array.At(2)); | 1917 EXPECT_EQ(255, uint8_array.At(2)); |
1918 EXPECT_EQ(255, uint8_clamped_array.At(2)); | |
1910 | 1919 |
1911 EXPECT_EQ(0, int8_array.At(3)); | 1920 EXPECT_EQ(0, int8_array.At(3)); |
1912 EXPECT_EQ(0, uint8_array.At(3)); | 1921 EXPECT_EQ(0, uint8_array.At(3)); |
1922 EXPECT_EQ(0, uint8_clamped_array.At(3)); | |
1913 | 1923 |
1914 EXPECT_EQ(1, int8_array.At(4)); | 1924 EXPECT_EQ(1, int8_array.At(4)); |
1915 EXPECT_EQ(1, uint8_array.At(4)); | 1925 EXPECT_EQ(1, uint8_array.At(4)); |
1926 EXPECT_EQ(1, uint8_clamped_array.At(4)); | |
1916 | 1927 |
1917 EXPECT_EQ(2, int8_array.At(5)); | 1928 EXPECT_EQ(2, int8_array.At(5)); |
1918 EXPECT_EQ(2, uint8_array.At(5)); | 1929 EXPECT_EQ(2, uint8_array.At(5)); |
1930 EXPECT_EQ(2, uint8_clamped_array.At(5)); | |
1919 | 1931 |
1920 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 1932 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
1921 uint8_t value = 0; | 1933 uint8_t value = 0; |
1922 ByteArray::Copy(&value, int8_array, i, sizeof(value)); | 1934 ByteArray::Copy(&value, int8_array, i, sizeof(value)); |
1923 EXPECT_EQ(value, uint8_array.At(i)); | 1935 EXPECT_EQ(value, uint8_array.At(i)); |
1924 } | 1936 } |
1925 | 1937 |
1926 int8_array.SetAt(2, -123); | 1938 int8_array.SetAt(2, -123); |
1927 uint8_array.SetAt(0, 123); | 1939 uint8_array.SetAt(0, 123); |
1928 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 1940 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
1929 int8_t value = 0; | 1941 int8_t value = 0; |
1930 ByteArray::Copy(&value, uint8_array, i, sizeof(value)); | 1942 ByteArray::Copy(&value, uint8_array, i, sizeof(value)); |
1931 EXPECT_EQ(int8_array.At(i), value); | 1943 EXPECT_EQ(int8_array.At(i), value); |
1932 } | 1944 } |
1945 | |
1946 uint8_clamped_array.SetAt(0, 123); | |
1947 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | |
1948 int8_t value = 0; | |
1949 ByteArray::Copy(&value, uint8_clamped_array, i, sizeof(value)); | |
1950 EXPECT_EQ(int8_array.At(i), value); | |
1951 } | |
1933 } | 1952 } |
1934 | 1953 |
1935 | 1954 |
1936 TEST_CASE(ByteArrayCopyInternal) { | 1955 TEST_CASE(ByteArrayCopyInternal) { |
1937 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 1956 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
1938 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | 1957 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; |
1939 | 1958 |
1940 const Uint8Array& internal = | 1959 { |
cshapiro
2012/12/05 23:01:49
Rather than adding a nested scope, how about split
srdjan
2012/12/06 19:23:14
Done.
| |
1941 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | 1960 const Uint8Array& internal = |
1942 EXPECT(!internal.IsNull()); | 1961 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); |
1943 EXPECT_EQ(4, internal.Length()); | 1962 EXPECT(!internal.IsNull()); |
1944 EXPECT_EQ(0, internal.At(0)); | 1963 EXPECT_EQ(4, internal.Length()); |
1945 EXPECT_EQ(1, internal.At(1)); | 1964 EXPECT_EQ(0, internal.At(0)); |
1946 EXPECT_EQ(2, internal.At(2)); | 1965 EXPECT_EQ(1, internal.At(1)); |
1947 EXPECT_EQ(3, internal.At(3)); | 1966 EXPECT_EQ(2, internal.At(2)); |
1967 EXPECT_EQ(3, internal.At(3)); | |
1948 | 1968 |
1949 // A zero length copy. | 1969 // A zero length copy. |
1950 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); | 1970 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); |
1951 EXPECT_EQ(0, internal.At(0)); | 1971 EXPECT_EQ(0, internal.At(0)); |
1952 EXPECT_EQ(1, internal.At(1)); | 1972 EXPECT_EQ(1, internal.At(1)); |
1953 EXPECT_EQ(2, internal.At(2)); | 1973 EXPECT_EQ(2, internal.At(2)); |
1954 EXPECT_EQ(3, internal.At(3)); | 1974 EXPECT_EQ(3, internal.At(3)); |
1955 | 1975 |
1956 // Another zero length copy. | 1976 // Another zero length copy. |
1957 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); | 1977 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); |
1958 EXPECT_EQ(0, internal.At(0)); | 1978 EXPECT_EQ(0, internal.At(0)); |
1959 EXPECT_EQ(1, internal.At(1)); | 1979 EXPECT_EQ(1, internal.At(1)); |
1960 EXPECT_EQ(2, internal.At(2)); | 1980 EXPECT_EQ(2, internal.At(2)); |
1961 EXPECT_EQ(3, internal.At(3)); | 1981 EXPECT_EQ(3, internal.At(3)); |
1962 | 1982 |
1963 // A one element copy. | 1983 // A one element copy. |
1964 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); | 1984 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); |
1965 EXPECT_EQ(4, internal.At(0)); | 1985 EXPECT_EQ(4, internal.At(0)); |
1966 EXPECT_EQ(1, internal.At(1)); | 1986 EXPECT_EQ(1, internal.At(1)); |
1967 EXPECT_EQ(2, internal.At(2)); | 1987 EXPECT_EQ(2, internal.At(2)); |
1968 EXPECT_EQ(3, internal.At(3)); | 1988 EXPECT_EQ(3, internal.At(3)); |
1969 | 1989 |
1970 // A two element copy. | 1990 // A two element copy. |
1971 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); | 1991 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); |
1972 EXPECT_EQ(4, internal.At(0)); | 1992 EXPECT_EQ(4, internal.At(0)); |
1973 EXPECT_EQ(1, internal.At(1)); | 1993 EXPECT_EQ(1, internal.At(1)); |
1974 EXPECT_EQ(4, internal.At(2)); | 1994 EXPECT_EQ(4, internal.At(2)); |
1975 EXPECT_EQ(5, internal.At(3)); | 1995 EXPECT_EQ(5, internal.At(3)); |
1976 | 1996 |
1977 // A three element copy. | 1997 // A three element copy. |
1978 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); | 1998 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); |
1979 EXPECT_EQ(4, internal.At(0)); | 1999 EXPECT_EQ(4, internal.At(0)); |
1980 EXPECT_EQ(4, internal.At(1)); | 2000 EXPECT_EQ(4, internal.At(1)); |
1981 EXPECT_EQ(5, internal.At(2)); | 2001 EXPECT_EQ(5, internal.At(2)); |
1982 EXPECT_EQ(6, internal.At(3)); | 2002 EXPECT_EQ(6, internal.At(3)); |
1983 | 2003 |
1984 // A four element copy. | 2004 // A four element copy. |
1985 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); | 2005 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); |
1986 EXPECT_EQ(0, internal.At(0)); | 2006 EXPECT_EQ(0, internal.At(0)); |
1987 EXPECT_EQ(1, internal.At(1)); | 2007 EXPECT_EQ(1, internal.At(1)); |
1988 EXPECT_EQ(2, internal.At(2)); | 2008 EXPECT_EQ(2, internal.At(2)); |
1989 EXPECT_EQ(3, internal.At(3)); | 2009 EXPECT_EQ(3, internal.At(3)); |
2010 } | |
2011 | |
2012 { | |
2013 const Uint8ClampedArray& internal = | |
2014 Uint8ClampedArray::Handle( | |
2015 Uint8ClampedArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
2016 EXPECT(!internal.IsNull()); | |
2017 EXPECT_EQ(4, internal.Length()); | |
2018 EXPECT_EQ(0, internal.At(0)); | |
2019 EXPECT_EQ(1, internal.At(1)); | |
2020 EXPECT_EQ(2, internal.At(2)); | |
2021 EXPECT_EQ(3, internal.At(3)); | |
2022 | |
2023 // A zero length copy. | |
2024 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); | |
2025 EXPECT_EQ(0, internal.At(0)); | |
2026 EXPECT_EQ(1, internal.At(1)); | |
2027 EXPECT_EQ(2, internal.At(2)); | |
2028 EXPECT_EQ(3, internal.At(3)); | |
2029 | |
2030 // Another zero length copy. | |
2031 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); | |
2032 EXPECT_EQ(0, internal.At(0)); | |
2033 EXPECT_EQ(1, internal.At(1)); | |
2034 EXPECT_EQ(2, internal.At(2)); | |
2035 EXPECT_EQ(3, internal.At(3)); | |
2036 | |
2037 // A one element copy. | |
2038 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); | |
2039 EXPECT_EQ(4, internal.At(0)); | |
2040 EXPECT_EQ(1, internal.At(1)); | |
2041 EXPECT_EQ(2, internal.At(2)); | |
2042 EXPECT_EQ(3, internal.At(3)); | |
2043 | |
2044 // A two element copy. | |
2045 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); | |
2046 EXPECT_EQ(4, internal.At(0)); | |
2047 EXPECT_EQ(1, internal.At(1)); | |
2048 EXPECT_EQ(4, internal.At(2)); | |
2049 EXPECT_EQ(5, internal.At(3)); | |
2050 | |
2051 // A three element copy. | |
2052 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); | |
2053 EXPECT_EQ(4, internal.At(0)); | |
2054 EXPECT_EQ(4, internal.At(1)); | |
2055 EXPECT_EQ(5, internal.At(2)); | |
2056 EXPECT_EQ(6, internal.At(3)); | |
2057 | |
2058 // A four element copy. | |
2059 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); | |
2060 EXPECT_EQ(0, internal.At(0)); | |
2061 EXPECT_EQ(1, internal.At(1)); | |
2062 EXPECT_EQ(2, internal.At(2)); | |
2063 EXPECT_EQ(3, internal.At(3)); | |
2064 } | |
1990 } | 2065 } |
1991 | 2066 |
1992 | 2067 |
1993 TEST_CASE(ByteArrayCopyExternal) { | 2068 TEST_CASE(ByteArrayCopyExternal) { |
1994 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 2069 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
1995 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | 2070 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; |
1996 | 2071 |
1997 uint8_t data[] = { 0, 1, 2, 3 }; | 2072 uint8_t data[] = { 0, 1, 2, 3 }; |
1998 const ExternalUint8Array& external = | 2073 { |
1999 ExternalUint8Array::Handle( | 2074 const ExternalUint8Array& external = |
2000 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); | 2075 ExternalUint8Array::Handle( |
2001 EXPECT(!external.IsNull()); | 2076 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); |
2002 EXPECT_EQ(4, external.Length()); | 2077 EXPECT(!external.IsNull()); |
2003 EXPECT_EQ(0, external.At(0)); | 2078 EXPECT_EQ(4, external.Length()); |
2004 EXPECT_EQ(1, external.At(1)); | 2079 EXPECT_EQ(0, external.At(0)); |
2005 EXPECT_EQ(2, external.At(2)); | 2080 EXPECT_EQ(1, external.At(1)); |
2006 EXPECT_EQ(3, external.At(3)); | 2081 EXPECT_EQ(2, external.At(2)); |
2007 | 2082 EXPECT_EQ(3, external.At(3)); |
2008 // A zero length copy. | 2083 |
2009 ByteArray::Copy(external, 0, b_4_5_6_7, 0); | 2084 // A zero length copy. |
2010 EXPECT_EQ(0, external.At(0)); | 2085 ByteArray::Copy(external, 0, b_4_5_6_7, 0); |
2011 EXPECT_EQ(1, external.At(1)); | 2086 EXPECT_EQ(0, external.At(0)); |
2012 EXPECT_EQ(2, external.At(2)); | 2087 EXPECT_EQ(1, external.At(1)); |
2013 EXPECT_EQ(3, external.At(3)); | 2088 EXPECT_EQ(2, external.At(2)); |
2014 | 2089 EXPECT_EQ(3, external.At(3)); |
2015 // Another zero length copy. | 2090 |
2016 ByteArray::Copy(external, 4, b_4_5_6_7, 0); | 2091 // Another zero length copy. |
2017 EXPECT_EQ(0, external.At(0)); | 2092 ByteArray::Copy(external, 4, b_4_5_6_7, 0); |
2018 EXPECT_EQ(1, external.At(1)); | 2093 EXPECT_EQ(0, external.At(0)); |
2019 EXPECT_EQ(2, external.At(2)); | 2094 EXPECT_EQ(1, external.At(1)); |
2020 EXPECT_EQ(3, external.At(3)); | 2095 EXPECT_EQ(2, external.At(2)); |
2021 | 2096 EXPECT_EQ(3, external.At(3)); |
2022 // A one element copy. | 2097 |
2023 ByteArray::Copy(external, 0, b_4_5_6_7, 1); | 2098 // A one element copy. |
2024 EXPECT_EQ(4, external.At(0)); | 2099 ByteArray::Copy(external, 0, b_4_5_6_7, 1); |
2025 EXPECT_EQ(1, external.At(1)); | 2100 EXPECT_EQ(4, external.At(0)); |
2026 EXPECT_EQ(2, external.At(2)); | 2101 EXPECT_EQ(1, external.At(1)); |
2027 EXPECT_EQ(3, external.At(3)); | 2102 EXPECT_EQ(2, external.At(2)); |
2028 | 2103 EXPECT_EQ(3, external.At(3)); |
2029 // A two element copy. | 2104 |
2030 ByteArray::Copy(external, 2, b_4_5_6_7, 2); | 2105 // A two element copy. |
2031 EXPECT_EQ(4, external.At(0)); | 2106 ByteArray::Copy(external, 2, b_4_5_6_7, 2); |
2032 EXPECT_EQ(1, external.At(1)); | 2107 EXPECT_EQ(4, external.At(0)); |
2033 EXPECT_EQ(4, external.At(2)); | 2108 EXPECT_EQ(1, external.At(1)); |
2034 EXPECT_EQ(5, external.At(3)); | 2109 EXPECT_EQ(4, external.At(2)); |
2035 | 2110 EXPECT_EQ(5, external.At(3)); |
2036 // A three element copy. | 2111 |
2037 ByteArray::Copy(external, 1, b_4_5_6_7, 3); | 2112 // A three element copy. |
2038 EXPECT_EQ(4, external.At(0)); | 2113 ByteArray::Copy(external, 1, b_4_5_6_7, 3); |
2039 EXPECT_EQ(4, external.At(1)); | 2114 EXPECT_EQ(4, external.At(0)); |
2040 EXPECT_EQ(5, external.At(2)); | 2115 EXPECT_EQ(4, external.At(1)); |
2041 EXPECT_EQ(6, external.At(3)); | 2116 EXPECT_EQ(5, external.At(2)); |
2042 | 2117 EXPECT_EQ(6, external.At(3)); |
2043 // A four element copy. | 2118 |
2044 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | 2119 // A four element copy. |
2045 EXPECT_EQ(0, external.At(0)); | 2120 ByteArray::Copy(external, 0, b_0_1_2_3, 4); |
2046 EXPECT_EQ(1, external.At(1)); | 2121 EXPECT_EQ(0, external.At(0)); |
2047 EXPECT_EQ(2, external.At(2)); | 2122 EXPECT_EQ(1, external.At(1)); |
2048 EXPECT_EQ(3, external.At(3)); | 2123 EXPECT_EQ(2, external.At(2)); |
2124 EXPECT_EQ(3, external.At(3)); | |
2125 } | |
2126 { | |
2127 const ExternalUint8ClampedArray& external = | |
2128 ExternalUint8ClampedArray::Handle( | |
2129 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data), NULL, NULL)); | |
2130 EXPECT(!external.IsNull()); | |
2131 EXPECT_EQ(4, external.Length()); | |
2132 EXPECT_EQ(0, external.At(0)); | |
2133 EXPECT_EQ(1, external.At(1)); | |
2134 EXPECT_EQ(2, external.At(2)); | |
2135 EXPECT_EQ(3, external.At(3)); | |
2136 | |
2137 // A zero length copy. | |
2138 ByteArray::Copy(external, 0, b_4_5_6_7, 0); | |
2139 EXPECT_EQ(0, external.At(0)); | |
2140 EXPECT_EQ(1, external.At(1)); | |
2141 EXPECT_EQ(2, external.At(2)); | |
2142 EXPECT_EQ(3, external.At(3)); | |
2143 | |
2144 // Another zero length copy. | |
2145 ByteArray::Copy(external, 4, b_4_5_6_7, 0); | |
2146 EXPECT_EQ(0, external.At(0)); | |
2147 EXPECT_EQ(1, external.At(1)); | |
2148 EXPECT_EQ(2, external.At(2)); | |
2149 EXPECT_EQ(3, external.At(3)); | |
2150 | |
2151 // A one element copy. | |
2152 ByteArray::Copy(external, 0, b_4_5_6_7, 1); | |
2153 EXPECT_EQ(4, external.At(0)); | |
2154 EXPECT_EQ(1, external.At(1)); | |
2155 EXPECT_EQ(2, external.At(2)); | |
2156 EXPECT_EQ(3, external.At(3)); | |
2157 | |
2158 // A two element copy. | |
2159 ByteArray::Copy(external, 2, b_4_5_6_7, 2); | |
2160 EXPECT_EQ(4, external.At(0)); | |
2161 EXPECT_EQ(1, external.At(1)); | |
2162 EXPECT_EQ(4, external.At(2)); | |
2163 EXPECT_EQ(5, external.At(3)); | |
2164 | |
2165 // A three element copy. | |
2166 ByteArray::Copy(external, 1, b_4_5_6_7, 3); | |
2167 EXPECT_EQ(4, external.At(0)); | |
2168 EXPECT_EQ(4, external.At(1)); | |
2169 EXPECT_EQ(5, external.At(2)); | |
2170 EXPECT_EQ(6, external.At(3)); | |
2171 | |
2172 // A four element copy. | |
2173 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
2174 EXPECT_EQ(0, external.At(0)); | |
2175 EXPECT_EQ(1, external.At(1)); | |
2176 EXPECT_EQ(2, external.At(2)); | |
2177 EXPECT_EQ(3, external.At(3)); | |
2178 } | |
2049 } | 2179 } |
2050 | 2180 |
2051 | 2181 |
2052 TEST_CASE(ByteArrayCopyInternalExternal) { | 2182 TEST_CASE(ByteArrayCopyInternalExternal) { |
2053 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 2183 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
2054 | |
2055 const Uint8Array& internal = | |
2056 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
2057 EXPECT(!internal.IsNull()); | |
2058 EXPECT_EQ(4, internal.Length()); | |
2059 EXPECT_EQ(0, internal.At(0)); | |
2060 EXPECT_EQ(1, internal.At(1)); | |
2061 EXPECT_EQ(2, internal.At(2)); | |
2062 EXPECT_EQ(3, internal.At(3)); | |
2063 | |
2064 uint8_t data[] = { 4, 5, 6, 7 }; | 2184 uint8_t data[] = { 4, 5, 6, 7 }; |
2065 const ExternalUint8Array& external = | 2185 |
2066 ExternalUint8Array::Handle( | 2186 { |
cshapiro
2012/12/05 23:01:49
ditto, here and below
srdjan
2012/12/06 19:23:14
Done.
| |
2067 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); | 2187 const Uint8Array& internal = |
2068 EXPECT(!external.IsNull()); | 2188 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); |
2069 EXPECT_EQ(4, external.Length()); | 2189 EXPECT(!internal.IsNull()); |
2070 EXPECT_EQ(4, external.At(0)); | 2190 EXPECT_EQ(4, internal.Length()); |
2071 EXPECT_EQ(5, external.At(1)); | 2191 EXPECT_EQ(0, internal.At(0)); |
2072 EXPECT_EQ(6, external.At(2)); | 2192 EXPECT_EQ(1, internal.At(1)); |
2073 EXPECT_EQ(7, external.At(3)); | 2193 EXPECT_EQ(2, internal.At(2)); |
2074 | 2194 EXPECT_EQ(3, internal.At(3)); |
2075 // A zero length copy. | 2195 |
2076 ByteArray::Copy(internal, 0, external, 0, 0); | 2196 const ExternalUint8Array& external = |
2077 EXPECT_EQ(0, internal.At(0)); | 2197 ExternalUint8Array::Handle( |
2078 EXPECT_EQ(1, internal.At(1)); | 2198 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); |
2079 EXPECT_EQ(2, internal.At(2)); | 2199 EXPECT(!external.IsNull()); |
2080 EXPECT_EQ(3, internal.At(3)); | 2200 EXPECT_EQ(4, external.Length()); |
2081 | 2201 EXPECT_EQ(4, external.At(0)); |
2082 // A zero length copy, take 2. | 2202 EXPECT_EQ(5, external.At(1)); |
2083 ByteArray::Copy(internal, 4, external, 0, 0); | 2203 EXPECT_EQ(6, external.At(2)); |
2084 EXPECT_EQ(0, internal.At(0)); | 2204 EXPECT_EQ(7, external.At(3)); |
2085 EXPECT_EQ(1, internal.At(1)); | 2205 |
2086 EXPECT_EQ(2, internal.At(2)); | 2206 // A zero length copy. |
2087 EXPECT_EQ(3, internal.At(3)); | 2207 ByteArray::Copy(internal, 0, external, 0, 0); |
2088 | 2208 EXPECT_EQ(0, internal.At(0)); |
2089 // A zero length copy, take 3. | 2209 EXPECT_EQ(1, internal.At(1)); |
2090 ByteArray::Copy(internal, 0, external, 4, 0); | 2210 EXPECT_EQ(2, internal.At(2)); |
2091 EXPECT_EQ(0, internal.At(0)); | 2211 EXPECT_EQ(3, internal.At(3)); |
2092 EXPECT_EQ(1, internal.At(1)); | 2212 |
2093 EXPECT_EQ(2, internal.At(2)); | 2213 // A zero length copy, take 2. |
2094 EXPECT_EQ(3, internal.At(3)); | 2214 ByteArray::Copy(internal, 4, external, 0, 0); |
2095 | 2215 EXPECT_EQ(0, internal.At(0)); |
2096 // A zero length copy, take 4. | 2216 EXPECT_EQ(1, internal.At(1)); |
2097 ByteArray::Copy(internal, 4, external, 4, 0); | 2217 EXPECT_EQ(2, internal.At(2)); |
2098 EXPECT_EQ(0, internal.At(0)); | 2218 EXPECT_EQ(3, internal.At(3)); |
2099 EXPECT_EQ(1, internal.At(1)); | 2219 |
2100 EXPECT_EQ(2, internal.At(2)); | 2220 // A zero length copy, take 3. |
2101 EXPECT_EQ(3, internal.At(3)); | 2221 ByteArray::Copy(internal, 0, external, 4, 0); |
2102 | 2222 EXPECT_EQ(0, internal.At(0)); |
2103 // A four element copy. | 2223 EXPECT_EQ(1, internal.At(1)); |
2104 ByteArray::Copy(internal, 0, external, 0, 4); | 2224 EXPECT_EQ(2, internal.At(2)); |
2105 EXPECT_EQ(4, internal.At(0)); | 2225 EXPECT_EQ(3, internal.At(3)); |
2106 EXPECT_EQ(5, internal.At(1)); | 2226 |
2107 EXPECT_EQ(6, internal.At(2)); | 2227 // A zero length copy, take 4. |
2108 EXPECT_EQ(7, internal.At(3)); | 2228 ByteArray::Copy(internal, 4, external, 4, 0); |
2109 EXPECT_EQ(4, external.At(0)); | 2229 EXPECT_EQ(0, internal.At(0)); |
2110 EXPECT_EQ(5, external.At(1)); | 2230 EXPECT_EQ(1, internal.At(1)); |
2111 EXPECT_EQ(6, external.At(2)); | 2231 EXPECT_EQ(2, internal.At(2)); |
2112 EXPECT_EQ(7, external.At(3)); | 2232 EXPECT_EQ(3, internal.At(3)); |
2113 | 2233 |
2114 // A four element copy, take 2. | 2234 // A four element copy. |
2115 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | 2235 ByteArray::Copy(internal, 0, external, 0, 4); |
2116 EXPECT_EQ(0, external.At(0)); | 2236 EXPECT_EQ(4, internal.At(0)); |
2117 EXPECT_EQ(1, external.At(1)); | 2237 EXPECT_EQ(5, internal.At(1)); |
2118 EXPECT_EQ(2, external.At(2)); | 2238 EXPECT_EQ(6, internal.At(2)); |
2119 EXPECT_EQ(3, external.At(3)); | 2239 EXPECT_EQ(7, internal.At(3)); |
2120 ByteArray::Copy(external, 0, internal, 0, 4); | 2240 EXPECT_EQ(4, external.At(0)); |
2121 EXPECT_EQ(4, internal.At(0)); | 2241 EXPECT_EQ(5, external.At(1)); |
2122 EXPECT_EQ(5, internal.At(1)); | 2242 EXPECT_EQ(6, external.At(2)); |
2123 EXPECT_EQ(6, internal.At(2)); | 2243 EXPECT_EQ(7, external.At(3)); |
2124 EXPECT_EQ(7, internal.At(3)); | 2244 |
2125 EXPECT_EQ(4, external.At(0)); | 2245 // A four element copy, take 2. |
2126 EXPECT_EQ(5, external.At(1)); | 2246 ByteArray::Copy(external, 0, b_0_1_2_3, 4); |
2127 EXPECT_EQ(6, external.At(2)); | 2247 EXPECT_EQ(0, external.At(0)); |
2128 EXPECT_EQ(7, external.At(3)); | 2248 EXPECT_EQ(1, external.At(1)); |
2249 EXPECT_EQ(2, external.At(2)); | |
2250 EXPECT_EQ(3, external.At(3)); | |
2251 ByteArray::Copy(external, 0, internal, 0, 4); | |
2252 EXPECT_EQ(4, internal.At(0)); | |
2253 EXPECT_EQ(5, internal.At(1)); | |
2254 EXPECT_EQ(6, internal.At(2)); | |
2255 EXPECT_EQ(7, internal.At(3)); | |
2256 EXPECT_EQ(4, external.At(0)); | |
2257 EXPECT_EQ(5, external.At(1)); | |
2258 EXPECT_EQ(6, external.At(2)); | |
2259 EXPECT_EQ(7, external.At(3)); | |
2260 } | |
2261 { | |
2262 const Uint8ClampedArray& internal = | |
2263 Uint8ClampedArray::Handle( | |
2264 Uint8ClampedArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
2265 EXPECT(!internal.IsNull()); | |
2266 EXPECT_EQ(4, internal.Length()); | |
2267 EXPECT_EQ(0, internal.At(0)); | |
2268 EXPECT_EQ(1, internal.At(1)); | |
2269 EXPECT_EQ(2, internal.At(2)); | |
2270 EXPECT_EQ(3, internal.At(3)); | |
2271 | |
2272 const ExternalUint8ClampedArray& external = | |
2273 ExternalUint8ClampedArray::Handle( | |
2274 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data), NULL, NULL)); | |
2275 EXPECT(!external.IsNull()); | |
2276 EXPECT_EQ(4, external.Length()); | |
2277 EXPECT_EQ(4, external.At(0)); | |
2278 EXPECT_EQ(5, external.At(1)); | |
2279 EXPECT_EQ(6, external.At(2)); | |
2280 EXPECT_EQ(7, external.At(3)); | |
2281 | |
2282 // A zero length copy. | |
2283 ByteArray::Copy(internal, 0, external, 0, 0); | |
2284 EXPECT_EQ(0, internal.At(0)); | |
2285 EXPECT_EQ(1, internal.At(1)); | |
2286 EXPECT_EQ(2, internal.At(2)); | |
2287 EXPECT_EQ(3, internal.At(3)); | |
2288 | |
2289 // A zero length copy, take 2. | |
2290 ByteArray::Copy(internal, 4, external, 0, 0); | |
2291 EXPECT_EQ(0, internal.At(0)); | |
2292 EXPECT_EQ(1, internal.At(1)); | |
2293 EXPECT_EQ(2, internal.At(2)); | |
2294 EXPECT_EQ(3, internal.At(3)); | |
2295 | |
2296 // A zero length copy, take 3. | |
2297 ByteArray::Copy(internal, 0, external, 4, 0); | |
2298 EXPECT_EQ(0, internal.At(0)); | |
2299 EXPECT_EQ(1, internal.At(1)); | |
2300 EXPECT_EQ(2, internal.At(2)); | |
2301 EXPECT_EQ(3, internal.At(3)); | |
2302 | |
2303 // A zero length copy, take 4. | |
2304 ByteArray::Copy(internal, 4, external, 4, 0); | |
2305 EXPECT_EQ(0, internal.At(0)); | |
2306 EXPECT_EQ(1, internal.At(1)); | |
2307 EXPECT_EQ(2, internal.At(2)); | |
2308 EXPECT_EQ(3, internal.At(3)); | |
2309 | |
2310 // A four element copy. | |
2311 ByteArray::Copy(internal, 0, external, 0, 4); | |
2312 EXPECT_EQ(4, internal.At(0)); | |
2313 EXPECT_EQ(5, internal.At(1)); | |
2314 EXPECT_EQ(6, internal.At(2)); | |
2315 EXPECT_EQ(7, internal.At(3)); | |
2316 EXPECT_EQ(4, external.At(0)); | |
2317 EXPECT_EQ(5, external.At(1)); | |
2318 EXPECT_EQ(6, external.At(2)); | |
2319 EXPECT_EQ(7, external.At(3)); | |
2320 | |
2321 // A four element copy, take 2. | |
2322 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
2323 EXPECT_EQ(0, external.At(0)); | |
2324 EXPECT_EQ(1, external.At(1)); | |
2325 EXPECT_EQ(2, external.At(2)); | |
2326 EXPECT_EQ(3, external.At(3)); | |
2327 ByteArray::Copy(external, 0, internal, 0, 4); | |
2328 EXPECT_EQ(4, internal.At(0)); | |
2329 EXPECT_EQ(5, internal.At(1)); | |
2330 EXPECT_EQ(6, internal.At(2)); | |
2331 EXPECT_EQ(7, internal.At(3)); | |
2332 EXPECT_EQ(4, external.At(0)); | |
2333 EXPECT_EQ(5, external.At(1)); | |
2334 EXPECT_EQ(6, external.At(2)); | |
2335 EXPECT_EQ(7, external.At(3)); | |
2336 } | |
2129 } | 2337 } |
2130 | 2338 |
2131 | 2339 |
2132 TEST_CASE(Script) { | 2340 TEST_CASE(Script) { |
2133 const char* url_chars = "builtin:test-case"; | 2341 const char* url_chars = "builtin:test-case"; |
2134 const char* source_chars = "This will not compile."; | 2342 const char* source_chars = "This will not compile."; |
2135 const String& url = String::Handle(String::New(url_chars)); | 2343 const String& url = String::Handle(String::New(url_chars)); |
2136 const String& source = String::Handle(String::New(source_chars)); | 2344 const String& source = String::Handle(String::New(source_chars)); |
2137 const Script& script = Script::Handle(Script::New(url, | 2345 const Script& script = Script::Handle(Script::New(url, |
2138 source, | 2346 source, |
(...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3250 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3458 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); |
3251 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3459 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); |
3252 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3460 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); |
3253 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3461 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); |
3254 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3462 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); |
3255 } | 3463 } |
3256 | 3464 |
3257 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3465 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
3258 | 3466 |
3259 } // namespace dart | 3467 } // namespace dart |
OLD | NEW |