Chromium Code Reviews| 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 |