// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include "verity_mounter_impl.h"

namespace imageloader {

TEST(VerityMounterTest, MapperParametersToLoop) {
  // Test valid case.
  int32_t loop = -1;
  EXPECT_TRUE(MapperParametersToLoop("0 7:6 7:6 4096 4096 3089 3089 sha256 "
                                     "eef4aa5dc50d181b7f6...", &loop));
  EXPECT_EQ(loop, 6);

  // Make sure notable edge cases are handled correctly.
  EXPECT_FALSE(MapperParametersToLoop("", &loop));
  EXPECT_FALSE(MapperParametersToLoop("0 7 6 7:6", &loop));
  EXPECT_FALSE(MapperParametersToLoop("0 7:a 7:6", &loop));
}

TEST(VerityMounterTest, IsAncestor) {
  // Test valid case.
  const base::FilePath ancestor("/dev/mapper/");
  const base::FilePath descendant("/dev/mapper/0123456789ABCDEF");
  EXPECT_TRUE(IsAncestor(ancestor, descendant));

  // Test reverse case.
  EXPECT_FALSE(IsAncestor(descendant, ancestor));

  // Test same path case.
  EXPECT_FALSE(IsAncestor(ancestor, ancestor));
}

}  // namespace imageloader
