#include <Pith/Config.hpp>
#include <Pith/Page.hpp>
#include <gtest/gtest.h>

using namespace Pith;

TEST(TestPage, pageSize) {
	Process::init();
	EXPECT_NE(Page::size(), std::size_t{0});
	Process::kill();
}

TEST(TestPage, mapOnePage) {
	Process::init();
	auto size = Page::size();
	auto addr = Page::map(size);
	Page::unmap(addr, size);
	Process::kill();
}

#include <Pith/Config.hpp>
#include <Pith/Page.hpp>
#include <gtest/gtest.h>

using namespace Pith;

TEST(TestPage, stackAllocate) {
	[[gnu::unused]] Page p;
}

TEST(TestPage, mapOnePage) {
	Span<Page> pages{nullptr, 1};
	auto result = Page::map(pages);
	EXPECT_TRUE(result);
	EXPECT_NE(result(), nullptr);
	pages.value(result());
	EXPECT_EQ(Page::unmap(pages), 0);
}

TEST(TestPage, setPermissions) {
	Span<Page> pages{nullptr, 1};
}

TEST(TestPage, setPermissionsOnUnmappedPage) {
	Span<Page> pages{nullptr, 1};

	// Get a fresh page.
	{
		auto r = Page::map(pages);
		ASSERT_TRUE(r);
		pages.value(r());
	}

	// Explicitly unmap it.
	{
		auto e = Page::unmap(pages);
		ASSERT_EQ(e, 0);
	}

	// Fail to set permissions on unmapped page.
	{
		auto e = Page::setPermissions(pages, Page::Permissions::READ);
		ASSERT_NE(e, 0);
	}
}

#if 0
TEST(PageSpan, mapAndUnmap) {
	PageSpan pages{nullptr, 1};
	auto map = pages.map();
	map.unmap();
}
#endif  // 0
--- 
+++ 
@@ -4,50 +4,16 @@
 
 using namespace Pith;
 
-TEST(TestPage, stackAllocate) {
-	[[gnu::unused]] Page p;
+TEST(TestPage, pageSize) {
+	Process::init();
+	EXPECT_NE(Page::size(), std::size_t{0});
+	Process::kill();
 }
 
 TEST(TestPage, mapOnePage) {
-	Span<Page> pages{nullptr, 1};
-	auto result = Page::map(pages);
-	EXPECT_TRUE(result);
-	EXPECT_NE(result(), nullptr);
-	pages.value(result());
-	EXPECT_EQ(Page::unmap(pages), 0);
+	Process::init();
+	auto size = Page::size();
+	auto addr = Page::map(size);
+	Page::unmap(addr, size);
+	Process::kill();
 }
-
-TEST(TestPage, setPermissions) {
-	Span<Page> pages{nullptr, 1};
-}
-
-TEST(TestPage, setPermissionsOnUnmappedPage) {
-	Span<Page> pages{nullptr, 1};
-
-	// Get a fresh page.
-	{
-		auto r = Page::map(pages);
-		ASSERT_TRUE(r);
-		pages.value(r());
-	}
-
-	// Explicitly unmap it.
-	{
-		auto e = Page::unmap(pages);
-		ASSERT_EQ(e, 0);
-	}
-
-	// Fail to set permissions on unmapped page.
-	{
-		auto e = Page::setPermissions(pages, Page::Permissions::READ);
-		ASSERT_NE(e, 0);
-	}
-}
-
-#if 0
-TEST(PageSpan, mapAndUnmap) {
-	PageSpan pages{nullptr, 1};
-	auto map = pages.map();
-	map.unmap();
-}
-#endif  // 0
Update the page tests to work with the new API

Signed-off-by: Robert Young <42c59959a3f4413d6a1b4d7b4f99db457d199e49@gmail.com>
