<!--
Copyright (C) 2016 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Polymer included for the html import polyfill. -->
<script src="../../bower_components/webcomponentsjs/webcomponents.min.js"></script>
<script src="../../bower_components/web-component-tester/browser.js"></script>
<title>gr-patch-set-behavior</title>

<link rel="import" href="../../bower_components/iron-test-helpers/iron-test-helpers.html">
<link rel="import" href="gr-patch-set-behavior.html">

<script>
  suite('gr-path-list-behavior tests', function() {
    test('getRevisionByPatchNum', function() {
      var get = Gerrit.PatchSetBehavior.getRevisionByPatchNum;
      var revisions = [
        {_number: 0},
        {_number: 1},
        {_number: 2},
      ];
      assert.deepEqual(get(revisions, '1'), revisions[1]);
      assert.deepEqual(get(revisions, 2), revisions[2]);
      assert.equal(get(revisions, '3'), undefined);
    });
  });
</script>
