Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(602)

Side by Side Diff: runtime/vm/object_test.cc

Issue 11437028: Added Uint8ClampedList. COmpielr optimziations to follow in next CL. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698