From: Otavio Salvador <[EMAIL PROTECTED]>

---

 libparted/tests/Makefile.am |   11 ++++++++
 libparted/tests/common.c    |   22 ++++++++++++++++
 libparted/tests/common.h    |    6 ++++
 libparted/tests/label.c     |   61 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 100 insertions(+), 0 deletions(-)

diff --git a/libparted/tests/Makefile.am b/libparted/tests/Makefile.am
new file mode 100644
index 0000000..79c7b69
--- /dev/null
+++ b/libparted/tests/Makefile.am
@@ -0,0 +1,11 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+TESTS = label
+bin_PROGRAMS     = label
+label_CFLAGS    = @CHECK_CFLAGS@ -I$(top_srcdir)/include
+label_LDADD     = @CHECK_LIBS@ $(top_builddir)/libparted/libparted.la
+label_SOURCES   = common.h common.c label.c
+
diff --git a/libparted/tests/common.c b/libparted/tests/common.c
new file mode 100644
index 0000000..9a4aeb5
--- /dev/null
+++ b/libparted/tests/common.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <string.h>
+
+#include "common.h"
+
+
+char *_create_disk(const off_t size)
+{
+               char filename[] = "parted-test-XXXXXX";
+               mktemp(filename);
+
+               FILE *disk = fopen(filename, "w");
+               off_t total_size = size * 1024 * 1024; /* Mb */
+
+               fseek(disk, total_size, SEEK_SET);
+               fwrite("", sizeof(char), sizeof(char), disk);
+               fclose(disk);
+
+               return strdup(filename);
+}
diff --git a/libparted/tests/common.h b/libparted/tests/common.h
new file mode 100644
index 0000000..466c218
--- /dev/null
+++ b/libparted/tests/common.h
@@ -0,0 +1,6 @@
+/* Create an empty disk image
+ *
+ * filename: file (with full path) where to write the disk image
+ *     size: size of disk image (megabytes)
+ */
+char *_create_disk(const off_t size);
diff --git a/libparted/tests/label.c b/libparted/tests/label.c
new file mode 100644
index 0000000..2fd9a5a
--- /dev/null
+++ b/libparted/tests/label.c
@@ -0,0 +1,61 @@
+#include <string.h>
+#include <unistd.h>
+
+#include <check.h>
+
+#include <parted/parted.h>
+
+#include "common.h"
+
+char *temporary_disk;
+
+void create_disk(void)
+{
+               temporary_disk = _create_disk(20);
+}
+
+void destroy_disk(void)
+{
+               unlink(temporary_disk);
+               free(temporary_disk);
+}
+
+/* TEST: Create a disklabel on a simple disk image */
+START_TEST (test_create_label)
+{
+               PedDevice *dev = ped_device_get(temporary_disk);
+               PedDiskType *type;
+               PedDisk *disk;
+
+               for (type = ped_disk_type_get_next(NULL); type;
+                        type = ped_disk_type_get_next(type)) {
+
+                               /* Not implemented yet */
+                               if (strncmp(type->name, "aix", 3) == 0)
+                                               continue;
+
+                               disk = ped_disk_new_fresh(dev, type);
+                               fail_if(!disk, "Failed to create a label of 
type: %s",
+                                                type->name);
+               }
+}
+END_TEST               
+
+int main(void)
+{
+               int number_failed;
+               Suite *suite = suite_create("Disk Label");
+               TCase *tcase_basic = tcase_create("Create");
+
+               tcase_add_checked_fixture(tcase_basic, create_disk, 
destroy_disk);
+               tcase_add_test(tcase_basic, test_create_label);
+               suite_add_tcase(suite, tcase_basic);
+
+               SRunner *srunner = srunner_create(suite);
+               srunner_run_all(srunner, CK_VERBOSE);
+
+               number_failed = srunner_ntests_failed(srunner);
+               srunner_free(srunner);
+               
+               return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}

_______________________________________________
parted-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/parted-devel

Reply via email to