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

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

Issue 2683633005: Add exception handler cache to isolate (Closed)
Patch Set: Add unittest Created 3 years, 10 months 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
OLDNEW
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
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.
4
5 #include <string.h>
6 #include "platform/assert.h"
7 #include "vm/fixed_cache.h"
8 #include "vm/unit_test.h"
9
10 namespace dart {
11
12 UNIT_TEST_CASE(FixedCacheEmpty) {
13 FixedCache<int, int, 2> cache;
14 EXPECT(cache.Lookup(0) == NULL);
15 EXPECT(cache.Lookup(1) == NULL);
16 cache.Insert(1, 2);
17 EXPECT(*cache.Lookup(1) == 2);
18 EXPECT(cache.Lookup(0) == NULL);
19 }
20
21
22 UNIT_TEST_CASE(FixedCacheHalfFull) {
23 FixedCache<int, const char*, 8> cache;
24 // Insert at end.
25 cache.Insert(10, "a");
26 cache.Insert(20, "b");
27 cache.Insert(40, "c");
28 // Insert in the middle.
29 cache.Insert(15, "ab");
30 cache.Insert(25, "bc");
31 // Insert in front.
32 cache.Insert(5, "_");
33 // Check all items.
34 EXPECT(strcmp(*cache.Lookup(5), "_") == 0);
35 EXPECT(strcmp(*cache.Lookup(10), "a") == 0);
36 EXPECT(strcmp(*cache.Lookup(20), "b") == 0);
37 EXPECT(strcmp(*cache.Lookup(40), "c") == 0);
38 EXPECT(strcmp(*cache.Lookup(25), "bc") == 0);
39 // Non-existent - front, middle, end.
40 EXPECT(cache.Lookup(1) == NULL);
41 EXPECT(cache.Lookup(35) == NULL);
42 EXPECT(cache.Lookup(50) == NULL);
43 }
44
45
46 struct Resource {
47 Resource() : id(0), stuff(NULL) {}
48 explicit Resource(int id_) : id(id_), stuff(new int) {}
49
50 int id;
51 int* stuff;
52 };
53
54 static void freeResource(Resource* res) {
55 delete res->stuff;
56 }
57
58
59 UNIT_TEST_CASE(FixedCacheFullDeleter) {
60 FixedCache<int, Resource, 6> cache(freeResource);
61 cache.Insert(10, Resource(2));
62 cache.Insert(20, Resource(4));
63 cache.Insert(40, Resource(16));
64 cache.Insert(30, Resource(8));
65 EXPECT(cache.Lookup(40)->id == 16);
66 EXPECT(cache.Lookup(5) == NULL);
67 EXPECT(cache.Lookup(0) == NULL);
68 // Insert in the front, middle.
69 cache.Insert(5, Resource(1));
70 cache.Insert(15, Resource(3));
71 cache.Insert(25, Resource(6));
72 // 40 got removed by shifting.
73 EXPECT(cache.Lookup(40) == NULL);
74 EXPECT(cache.Lookup(5)->id == 1);
75 EXPECT(cache.Lookup(15)->id == 3);
76 EXPECT(cache.Lookup(25)->id == 6);
77
78 // Insert at end top - 30 gets replaced by 40.
79 cache.Insert(40, Resource(16));
80 EXPECT(cache.Lookup(40)->id == 16);
81 EXPECT(cache.Lookup(30) == NULL);
82 }
83
84 } // namespace dart
OLDNEW
« runtime/vm/exceptions.h ('K') | « runtime/vm/fixed_cache.h ('k') | runtime/vm/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698