1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# Copyright 2014 The Chromium Authors. All rights reserved.
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# Use of this source code is governed by a BSD-style license that can be
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# found in the LICENSE file.
4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport unittest
5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)from telemetry.timeline import model as model_module
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass ThreadUnittest(unittest.TestCase):
10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  def testIterAllSlicesInRange(self):
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    model = model_module.TimelineModel()
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    #    [       X     ] [   Y    ] [   U   ]
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    #        [   Z   ]     [ T ]
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    #      |                           |
17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    #    start                        end
18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.BeginSlice('cat1', 'X', 10)
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.BeginSlice('cat1', 'Z', 20)
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.EndSlice(30)
21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.EndSlice(40)
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.BeginSlice('cat1', 'Y', 50)
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.BeginSlice('cat1', 'T', 52)
24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.EndSlice(55)
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.EndSlice(60)
26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.BeginSlice('cat1', 'U', 60)
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    renderer_main.EndSlice(70)
28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    model.FinalizeImport(shift_world_to_zero=False)
30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    slice_names = set(s.name for s in
31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                      renderer_main.IterAllSlicesInRange(start=12, end=65))
32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    self.assertEqual(slice_names, {'Z', 'Y', 'T'})
33