put again efreet tests in the source tree

SVN revision: 56197
This commit is contained in:
Vincent Torri 2011-01-16 19:07:19 +00:00
parent da5549086a
commit 2a40bd2c7c
43 changed files with 5775 additions and 2 deletions

View File

@ -34,10 +34,58 @@ efreet.pc.in \
efreet-mime.pc.in \
efreet.spec.in \
efreet.spec \
m4/efl_coverage.m4\
m4/efl_tests.m4\
README
.PHONY: doc
.PHONY: doc coverage
doc:
@echo "entering doc/"
make -C doc doc
# Unit tests
if EFL_ENABLE_TESTS
check-local:
@./src/tests/efreet_suite
else
check-local:
@echo "reconfigure with --enable-tests"
endif
# Coverage report
if EFL_ENABLE_COVERAGE
lcov-reset:
@rm -rf coverage
@find . -name "*.gcda" -exec rm {} \;
@lcov --directory . --zerocounters
lcov-report:
@mkdir coverage
@lcov --compat-libtool --directory $(top_srcdir)/src --capture --output-file coverage/coverage.info
@lcov -l coverage/coverage.info | grep -v "`cd $(top_srcdir) && pwd`" | cut -d: -f1 > coverage/remove
@lcov -r coverage/coverage.info `cat coverage/remove` > coverage/coverage.cleaned.info
@rm coverage/remove
@mv coverage/coverage.cleaned.info coverage/coverage.info
@genhtml -t "$(PACKAGE_STRING)" -o coverage coverage/coverage.info
coverage:
@make lcov-reset
@make check
@make lcov-report
else
lcov-reset:
@echo "reconfigure with --enable-coverage"
lcov-report:
@echo "reconfigure with --enable-coverage"
coverage:
@echo "reconfigure with --enable-tests --enable-coverage"
endif

View File

@ -219,6 +219,17 @@ AC_ISC_POSIX
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(strlcpy)
### Unit tests, coverage
EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
EFREET_CFLAGS="${EFREET_CFLAGS} ${EFL_COVERAGE_CFLAGS}"
EFREET_LIBS="${EFREET_LIBS} ${EFL_COVERAGE_LIBS}"
if test "x$enable_coverage" = "xyes" ; then
EFREET_CFLAGS="${EFREET_CFLAGS} ${EFL_DEBUG_CFLAGS}"
fi
AC_SUBST(requirement_efreet)
AC_OUTPUT([
@ -232,6 +243,10 @@ doc/Doxyfile
src/Makefile
src/lib/Makefile
src/bin/Makefile
src/tests/Makefile
src/tests/data/Makefile
src/tests/data/sub/Makefile
src/tests/compare/Makefile
])
@ -253,6 +268,9 @@ echo " Sloppy.............: ${enable_sloppy_spec}"
echo
echo " Icon cache...........: ${enable_icon_cache}"
echo
echo " Tests................: ${enable_tests}"
echo " Coverage.............: ${enable_coverage}"
echo
echo " Documentation........: ${build_doc}"
echo
echo "Compilation............: make (or gmake)"

View File

@ -1,4 +1,4 @@
SUBDIRS = lib bin
SUBDIRS = lib bin tests
MAINTAINERCLEANFILES = Makefile.in

View File

@ -0,0 +1,7 @@
.deps
.libs
Makefile
Makefile.in
efreet_spec_test
efreet_test
efreet_cache_test

View File

@ -0,0 +1,69 @@
SUBDIRS = data compare
MAINTAINERCLEANFILES = Makefile.in
AM_CPPFLAGS = \
-I. \
-I$(top_srcdir)/src/lib \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
@EFREET_CFLAGS@
bin_PROGRAMS = efreet_test efreet_spec_test efreet_cache_test
if ICON_CACHE
bin_PROGRAMS += efreet_icon_cache_dump
endif
efreet_test_LDADD = $(top_builddir)/src/lib/libefreet.la \
$(top_builddir)/src/lib/libefreet_mime.la \
@EFREET_LIBS@
efreet_test_SOURCES = \
ef_test.h \
ef_data_dirs.c \
ef_icon_theme.c \
ef_ini.c \
ef_utils.c \
ef_desktop.c \
ef_menu.c \
ef_mime.c \
main.c
if DEFAULT_VISIBILITY
efreet_test_SOURCES += \
ef_locale.c
endif
efreet_spec_test_LDADD = $(top_builddir)/src/lib/libefreet.la @EINA_LIBS@
efreet_spec_test_SOURCES = \
efreet_spec_test.c
efreet_cache_test_LDADD = $(top_builddir)/src/lib/libefreet.la @EFREET_LIBS@
efreet_cache_test_SOURCES = \
ef_cache.c
if EFL_ENABLE_TESTS
check_PROGRAMS = efreet_suite
efreet_suite_SOURCES = \
efreet_suite.c \
efreet_test_efreet.c \
efreet_test_efreet_cache.c
efreet_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libefreet.la
endif
if ICON_CACHE
efreet_icon_cache_dump_LDADD = \
$(top_builddir)/src/lib/libefreet.la \
@EFREET_LIBS@
efreet_icon_cache_dump_SOURCES = \
efreet_icon_cache_dump.c
endif

View File

@ -0,0 +1,8 @@
.deps
.libs
Makefile
Makefile.in
compare_results
ecore_alloc
efreet_alloc
efreet_menu_alloc

View File

@ -0,0 +1,15 @@
MAINTAINERCLEANFILES = Makefile.in
AM_CPPFLAGS = \
-I. \
-I$(top_srcdir)/src/lib \
@EFREET_CFLAGS@
bin_PROGRAMS = efreet_alloc efreet_menu_alloc
efreet_menu_alloc_SOURCES = efreet_menu_alloc.c comp.h
efreet_menu_alloc_LDADD = $(top_builddir)/src/lib/libefreet.la @EFREET_LIBS@
efreet_alloc_SOURCES = efreet_alloc.c comp.h
efreet_alloc_LDADD = $(top_builddir)/src/lib/libefreet.la @EFREET_LIBS@

View File

@ -0,0 +1,527 @@
#ifndef COMP_H
#define COMP_H
#define LOOPS 1000
#define THEME "Tango"
#define SIZE 16
#define ADDRESS_BOOK_NEW "address-book-new"
#define APPLICATION_EXIT "application-exit"
#define APPOINTMENT_NEW "appointment-new"
#define CONTACT_NEW "contact-new"
#define DIALOG_APPLY "dialog-apply"
#define DIALOG_CANCEL "dialog-cancel"
#define DIALOG_CLOSE "dialog-close"
#define DIALOG_OK "dialog-ok"
#define DOCUMENT_NEW "document-new"
#define DOCUMENT_OPEN "document-open"
#define DOCUMENT_OPEN_RECENT "document-open-recent"
#define DOCUMENT_PAGE_SETUP "document-page-setup"
#define DOCUMENT_PRINT "document-print"
#define DOCUMENT_PRINT_PREVIEW "document-print-preview"
#define DOCUMENT_PROPERTIES "document-properties"
#define DOCUMENT_REVERT "document-revert"
#define DOCUMENT_SAVE "document-save"
#define DOCUMENT_SAVE_AS "document-save-as"
#define EDIT_COPY "edit-copy"
#define EDIT_CUT "edit-cut"
#define EDIT_DELETE "edit-delete"
#define EDIT_FIND "edit-find"
#define EDIT_FIND_REPLACE "edit-find-replace"
#define EDIT_PASTE "edit-paste"
#define EDIT_REDO "edit-redo"
#define EDIT_SELECT_ALL "edit-select-all"
#define EDIT_UNDO "edit-undo"
#define FORMAT_INDENT_LESS "format-indent-less"
#define FORMAT_INDENT_MORE "format-indent-more"
#define FORMAT_JUSTIFY_CENTER "format-justify-center"
#define FORMAT_JUSTIFY_FILL "format-justify-fill"
#define FORMAT_JUSTIFY_LEFT "format-justify-left"
#define FORMAT_JUSTIFY_RIGHT "format-justify-right"
#define FORMAT_TEXT_DIRECTION_LTR "format-text-direction-ltr"
#define FORMAT_TEXT_DIRECTION_RTL "format-text-direction-rtl"
#define FORMAT_TEXT_BOLD "format-text-bold"
#define FORMAT_TEXT_ITALIC "format-text-italic"
#define FORMAT_TEXT_UNDERLINE "format-text-underline"
#define FORMAT_TEXT_STRIKETHROUGH "format-text-strikethrough"
#define GO_BOTTOM "go-bottom"
#define GO_DOWN "go-down"
#define GO_FIRST "go-first"
#define GO_HOME "go-home"
#define GO_JUMP "go-jump"
#define GO_LAST "go-last"
#define GO_NEXT "go-next"
#define GO_PREVIOUS "go-previous"
#define GO_TOP "go-top"
#define GO_UP "go-up"
#define HELP_ABOUT "help-about"
#define HELP_CONTENTS "help-contents"
#define HELP_FAQ "help-faq"
#define INSERT_IMAGE "insert-image"
#define INSERT_LINK "insert-link"
#define INSERT_OBJECT "insert-object"
#define INSERT_TEXT "insert-text"
#define LIST_ADD "list-add"
#define LIST_REMOVE "list-remove"
#define MAIL_FORWARD "mail-forward"
#define MAIL_MARK_IMPORTANT "mail-mark-important"
#define MAIL_MARK_JUNK "mail-mark-junk"
#define MAIL_MARK_NOTJUNK "mail-mark-notjunk"
#define MAIL_MARK_READ "mail-mark-read"
#define MAIL_MARK_UNREAD "mail-mark-unread"
#define MAIL_MESSAGE_NEW "mail-message-new"
#define MAIL_REPLY_ALL "mail-reply-all"
#define MAIL_REPLY_SENDER "mail-reply-sender"
#define MAIL_SEND_RECEIVE "mail-send-receive"
#define MEDIA_EJECT "media-eject"
#define MEDIA_PLAYBACK_PAUSE "media-playback-pause"
#define MEDIA_PLAYBACK_START "media-playback-start"
#define MEDIA_PLAYBACK_STOP "media-playback-stop"
#define MEDIA_RECORD "media-record"
#define MEDIA_SEEK_BACKWARD "media-seek-backward"
#define MEDIA_SEEK_FORWARD "media-seek-forward"
#define MEDIA_SKIP_BACKWARD "media-skip-backward"
#define MEDIA_SKIP_FORWARD "media-skip-forward"
#define SYSTEM_LOCK_SCREEN "system-lock-screen"
#define SYSTEM_LOG_OUT "system-log-out"
#define SYSTEM_RUN "system-run"
#define SYSTEM_SEARCH "system-search"
#define TOOLS_CHECK_SPELLING "tools-check-spelling"
#define VIEW_FULLSCREEN "view-fullscreen"
#define VIEW_REFRESH "view-refresh"
#define VIEW_SORT_ASCENDING "view-sort-ascending"
#define VIEW_SORT_DESCENDING "view-sort-descending"
#define WINDOW_CLOSE "window-close"
#define WINDOW_NEW "window-new"
#define ZOOM_BEST_FIT "zoom-best-fit"
#define ZOOM_IN "zoom-in"
#define ZOOM_ORIGINAL "zoom-original"
#define ZOOM_OUT "zoom-out"
#define PROCESS_WORKING "process-working"
#define ACCESSORIES_CALCULATOR "accessories-calculator"
#define ACCESSORIES_CHARACTER_MAP "accessories-character-map"
#define ACCESSORIES_DICTIONARY "accessories-dictionary"
#define ACCESSORIES_TEXT_EDITOR "accessories-text-editor"
#define HELP_BROWSER "help-browser"
#define MULTIMEDIA_VOLUME_CONTROL "multimedia-volume-control"
#define PREFERENCES_DESKTOP_ACCESSIBILITY "preferences-desktop-accessibility"
#define PREFERENCES_DESKTOP_FONT "preferences-desktop-font"
#define PREFERENCES_DESKTOP_KEYBOARD "preferences-desktop-keyboard"
#define PREFERENCES_DESKTOP_LOCALE "preferences-desktop-locale"
#define PREFERENCES_DESKTOP_MULTIMEDIA "preferences-desktop-multimedia"
#define PREFERENCES_DESKTOP_SCREENSAVER "preferences-desktop-screensaver"
#define PREFERENCES_DESKTOP_THEME "preferences-desktop-theme"
#define PREFERENCES_DESKTOP_WALLPAPER "preferences-desktop-wallpaper"
#define SYSTEM_FILE_MANAGER "system-file-manager"
#define SYSTEM_SOFTWARE_UPDATE "system-software-update"
#define UTILITIES_TERMINAL "utilities-terminal"
#define APPLICATIONS_ACCESSORIES "applications-accessories"
#define APPLICATIONS_DEVELOPMENT "applications-development"
#define APPLICATIONS_GAMES "applications-games"
#define APPLICATIONS_GRAPHICS "applications-graphics"
#define APPLICATIONS_INTERNET "applications-internet"
#define APPLICATIONS_MULTIMEDIA "applications-multimedia"
#define APPLICATIONS_OFFICE "applications-office"
#define APPLICATIONS_OTHER "applications-other"
#define APPLICATIONS_SYSTEM "applications-system"
#define APPLICATIONS_UTILITIES "applications-utilities"
#define PREFERENCES_DESKTOP "preferences-desktop"
#define PREFERENCES_DESKTOP_ACCESSIBILITY "preferences-desktop-accessibility"
#define PREFERENCES_DESKTOP_PERIPHERALS "preferences-desktop-peripherals"
#define PREFERENCES_DESKTOP_PERSONAL "preferences-desktop-personal"
#define PREFERENCES_OTHER "preferences-other"
#define PREFERENCES_SYSTEM "preferences-system"
#define PREFERENCES_SYSTEM_NETWORK "preferences-system-network"
#define SYSTEM_HELP "system-help"
#define AUDIO_CARD "audio-card"
#define AUDIO_INPUT_MICROPHONE "audio-input-microphone"
#define BATTERY "battery"
#define CAMERA_PHOTO "camera-photo"
#define CAMERA_VIDEO "camera-video"
#define COMPUTER "computer"
#define DRIVE_CDROM "drive-cdrom"
#define DRIVE_HARDDISK "drive-harddisk"
#define DRIVE_REMOVABLE_MEDIA "drive-removable-media"
#define INPUT_GAMING "input-gaming"
#define INPUT_KEYBOARD "input-keyboard"
#define INPUT_MOUSE "input-mouse"
#define MEDIA_CDROM "media-cdrom"
#define MEDIA_FLOPPY "media-floppy"
#define MULTIMEDIA_PLAYER "multimedia-player"
#define NETWORK_WIRED "network-wired"
#define NETWORK_WIRELESS "network-wireless"
#define PRINTER "printer"
#define EMBLEM_DEFAULT "emblem-default"
#define EMBLEM_DOCUMENTS "emblem-documents"
#define EMBLEM_DOWNLOADS "emblem-downloads"
#define EMBLEM_FAVORITE "emblem-favorite"
#define EMBLEM_IMPORTANT "emblem-important"
#define EMBLEM_MAIL "emblem-mail"
#define EMBLEM_PHOTOS "emblem-photos"
#define EMBLEM_READONLY "emblem-readonly"
#define EMBLEM_SHARED "emblem-shared"
#define EMBLEM_SYMBOLIC_LINK "emblem-symbolic-link"
#define EMBLEM_SYNCHRONIZED "emblem-synchronized"
#define EMBLEM_SYSTEM "emblem-system"
#define EMBLEM_UNREADABLE "emblem-unreadable"
#define FACE_ANGEL "face-angel"
#define FACE_CRYING "face-crying"
#define FACE_DEVIL_GRIN "face-devil-grin"
#define FACE_DEVIL_SAD "face-devil-sad"
#define FACE_GLASSES "face-glasses"
#define FACE_KISS "face-kiss"
#define FACE_MONKEY "face-monkey"
#define FACE_PLAIN "face-plain"
#define FACE_SAD "face-sad"
#define FACE_SMILE "face-smile"
#define FACE_SMILE_BIG "face-smile-big"
#define FACE_SMIRK "face-smirk"
#define FACE_SURPRISE "face-surprise"
#define FACE_WINK "face-wink"
#define APPLICATION_X_EXECUTABLE "application-x-executable"
#define AUDIO_X_GENERIC "audio-x-generic"
#define FONT_X_GENERIC "font-x-generic"
#define IMAGE_X_GENERIC "image-x-generic"
#define PACKAGE_X_GENERIC "package-x-generic"
#define TEXT_HTML "text-html"
#define TEXT_X_GENERIC "text-x-generic"
#define TEXT_X_GENERIC_TEMPLATE "text-x-generic-template"
#define TEXT_X_SCRIPT "text-x-script"
#define VIDEO_X_GENERIC "video-x-generic"
#define X_OFFICE_ADDRESS_BOOK "x-office-address-book"
#define X_OFFICE_CALENDAR "x-office-calendar"
#define X_OFFICE_DOCUMENT "x-office-document"
#define X_OFFICE_PRESENTATION "x-office-presentation"
#define X_OFFICE_SPREADSHEET "x-office-spreadsheet"
#define FOLDER "folder"
#define FOLDER_REMOTE "folder-remote"
#define NETWORK_SERVER "network-server"
#define NETWORK_WORKGROUP "network-workgroup"
#define START_HERE "start-here"
#define USER_DESKTOP "user-desktop"
#define USER_HOME "user-home"
#define USER_TRASH "user-trash"
#define APPOINTMENT_MISSED "appointment-missed"
#define APPOINTMENT_SOON "appointment-soon"
#define AUDIO_VOLUME_HIGH "audio-volume-high"
#define AUDIO_VOLUME_LOW "audio-volume-low"
#define AUDIO_VOLUME_MEDIUM "audio-volume-medium"
#define AUDIO_VOLUME_MUTED "audio-volume-muted"
#define BATTERY_CAUTION "battery-caution"
#define BATTERY_LOW "battery-low"
#define DIALOG_ERROR "dialog-error"
#define DIALOG_INFORMATION "dialog-information"
#define DIALOG_PASSWORD "dialog-password"
#define DIALOG_QUESTION "dialog-question"
#define DIALOG_WARNING "dialog-warning"
#define FOLDER_DRAG_ACCEPT "folder-drag-accept"
#define FOLDER_OPEN "folder-open"
#define FOLDER_VISITING "folder-visiting"
#define IMAGE_LOADING "image-loading"
#define IMAGE_MISSING "image-missing"
#define MAIL_ATTACHMENT "mail-attachment"
#define MAIL_UNREAD "mail-unread"
#define MAIL_READ "mail-read"
#define MAIL_REPLIED "mail-replied"
#define MAIL_SIGNED "mail-signed"
#define MAIL_SIGNED_VERIFIED "mail-signed-verified"
#define MEDIA_PLAYLIST_REPEAT "media-playlist-repeat"
#define MEDIA_PLAYLIST_SHUFFLE "media-playlist-shuffle"
#define NETWORK_ERROR "network-error"
#define NETWORK_IDLE "network-idle"
#define NETWORK_OFFLINE "network-offline"
#define NETWORK_RECEIVE "network-receive"
#define NETWORK_TRANSMIT "network-transmit"
#define NETWORK_TRANSMIT_RECEIVE "network-transmit-receive"
#define PRINTER_ERROR "printer-error"
#define PRINTER_PRINTING "printer-printing"
#define SOFTWARE_UPDATE_AVAILABLE "software-update-available"
#define SOFTWARE_UPDATE_URGENT "software-update-urgent"
#define SYNC_ERROR "sync-error"
#define SYNC_SYNCHRONIZING "sync-synchronizing"
#define TASK_DUE "task-due"
#define TASK_PASSED_DUE "task-passed-due"
#define USER_AWAY "user-away"
#define USER_IDLE "user-idle"
#define USER_OFFLINE "user-offline"
#define USER_ONLINE "user-online"
#define USER_TRASH_FULL "user-trash-full"
#define WEATHER_CLEAR "weather-clear"
#define WEATHER_CLEAR_NIGHT "weather-clear-night"
#define WEATHER_FEW_CLOUDS "weather-few-clouds"
#define WEATHER_FEW_CLOUDS_NIGHT "weather-few-clouds-night"
#define WEATHER_FOG "weather-fog"
#define WEATHER_OVERCAST "weather-overcast"
#define WEATHER_SEVERE_ALERT "weather-severe-alert"
#define WEATHER_SHOWERS "weather-showers"
#define WEATHER_SHOWERS_SCATTERED "weather-showers-scattered"
#define WEATHER_SNOW "weather-snow"
#define WEATHER_STORM "weather-storm"
const char *icons[] = {
ADDRESS_BOOK_NEW,
APPLICATION_EXIT,
APPOINTMENT_NEW,
CONTACT_NEW,
DIALOG_APPLY,
DIALOG_CANCEL,
DIALOG_CLOSE,
DIALOG_OK,
DOCUMENT_NEW,
DOCUMENT_OPEN,
DOCUMENT_OPEN_RECENT,
DOCUMENT_PAGE_SETUP,
DOCUMENT_PRINT,
DOCUMENT_PRINT_PREVIEW,
DOCUMENT_PROPERTIES,
DOCUMENT_REVERT,
DOCUMENT_SAVE,
DOCUMENT_SAVE_AS,
EDIT_COPY,
EDIT_CUT,
EDIT_DELETE,
EDIT_FIND,
EDIT_FIND_REPLACE,
EDIT_PASTE,
EDIT_REDO,
EDIT_SELECT_ALL,
EDIT_UNDO,
FORMAT_INDENT_LESS,
FORMAT_INDENT_MORE,
FORMAT_JUSTIFY_CENTER,
FORMAT_JUSTIFY_FILL,
FORMAT_JUSTIFY_LEFT,
FORMAT_JUSTIFY_RIGHT,
FORMAT_TEXT_DIRECTION_LTR,
FORMAT_TEXT_DIRECTION_RTL,
FORMAT_TEXT_BOLD,
FORMAT_TEXT_ITALIC,
FORMAT_TEXT_UNDERLINE,
FORMAT_TEXT_STRIKETHROUGH,
GO_BOTTOM,
GO_DOWN,
GO_FIRST,
GO_HOME,
GO_JUMP,
GO_LAST,
GO_NEXT,
GO_PREVIOUS,
GO_TOP,
GO_UP,
HELP_ABOUT,
HELP_CONTENTS,
HELP_FAQ,
INSERT_IMAGE,
INSERT_LINK,
INSERT_OBJECT,
INSERT_TEXT,
LIST_ADD,
LIST_REMOVE,
MAIL_FORWARD,
MAIL_MARK_IMPORTANT,
MAIL_MARK_JUNK,
MAIL_MARK_NOTJUNK,
MAIL_MARK_READ,
MAIL_MARK_UNREAD,
MAIL_MESSAGE_NEW,
MAIL_REPLY_ALL,
MAIL_REPLY_SENDER,
MAIL_SEND_RECEIVE,
MEDIA_EJECT,
MEDIA_PLAYBACK_PAUSE,
MEDIA_PLAYBACK_START,
MEDIA_PLAYBACK_STOP,
MEDIA_RECORD,
MEDIA_SEEK_BACKWARD,
MEDIA_SEEK_FORWARD,
MEDIA_SKIP_BACKWARD,
MEDIA_SKIP_FORWARD,
SYSTEM_LOCK_SCREEN,
SYSTEM_LOG_OUT,
SYSTEM_RUN,
SYSTEM_SEARCH,
TOOLS_CHECK_SPELLING,
VIEW_FULLSCREEN,
VIEW_REFRESH,
VIEW_SORT_ASCENDING,
VIEW_SORT_DESCENDING,
WINDOW_CLOSE,
WINDOW_NEW,
ZOOM_BEST_FIT,
ZOOM_IN,
ZOOM_ORIGINAL,
ZOOM_OUT,
PROCESS_WORKING,
ACCESSORIES_CALCULATOR,
ACCESSORIES_CHARACTER_MAP,
ACCESSORIES_DICTIONARY,
ACCESSORIES_TEXT_EDITOR,
HELP_BROWSER,
MULTIMEDIA_VOLUME_CONTROL,
PREFERENCES_DESKTOP_ACCESSIBILITY,
PREFERENCES_DESKTOP_FONT,
PREFERENCES_DESKTOP_KEYBOARD,
PREFERENCES_DESKTOP_LOCALE,
PREFERENCES_DESKTOP_MULTIMEDIA,
PREFERENCES_DESKTOP_SCREENSAVER,
PREFERENCES_DESKTOP_THEME,
PREFERENCES_DESKTOP_WALLPAPER,
SYSTEM_FILE_MANAGER,
SYSTEM_SOFTWARE_UPDATE,
UTILITIES_TERMINAL,
APPLICATIONS_ACCESSORIES,
APPLICATIONS_DEVELOPMENT,
APPLICATIONS_GAMES,
APPLICATIONS_GRAPHICS,
APPLICATIONS_INTERNET,
APPLICATIONS_MULTIMEDIA,
APPLICATIONS_OFFICE,
APPLICATIONS_OTHER,
APPLICATIONS_SYSTEM,
APPLICATIONS_UTILITIES,
PREFERENCES_DESKTOP,
PREFERENCES_DESKTOP_ACCESSIBILITY,
PREFERENCES_DESKTOP_PERIPHERALS,
PREFERENCES_DESKTOP_PERSONAL,
PREFERENCES_OTHER,
PREFERENCES_SYSTEM,
PREFERENCES_SYSTEM_NETWORK,
SYSTEM_HELP,
AUDIO_CARD,
AUDIO_INPUT_MICROPHONE,
BATTERY,
CAMERA_PHOTO,
CAMERA_VIDEO,
COMPUTER,
DRIVE_CDROM,
DRIVE_HARDDISK,
DRIVE_REMOVABLE_MEDIA,
INPUT_GAMING,
INPUT_KEYBOARD,
INPUT_MOUSE,
MEDIA_CDROM,
MEDIA_FLOPPY,
MULTIMEDIA_PLAYER,
NETWORK_WIRED,
NETWORK_WIRELESS,
PRINTER,
EMBLEM_DEFAULT,
EMBLEM_DOCUMENTS,
EMBLEM_DOWNLOADS,
EMBLEM_FAVORITE,
EMBLEM_IMPORTANT,
EMBLEM_MAIL,
EMBLEM_PHOTOS,
EMBLEM_READONLY,
EMBLEM_SHARED,
EMBLEM_SYMBOLIC_LINK,
EMBLEM_SYNCHRONIZED,
EMBLEM_SYSTEM,
EMBLEM_UNREADABLE,
FACE_ANGEL,
FACE_CRYING,
FACE_DEVIL_GRIN,
FACE_DEVIL_SAD,
FACE_GLASSES,
FACE_KISS,
FACE_MONKEY,
FACE_PLAIN,
FACE_SAD,
FACE_SMILE,
FACE_SMILE_BIG,
FACE_SMIRK,
FACE_SURPRISE,
FACE_WINK,
APPLICATION_X_EXECUTABLE,
AUDIO_X_GENERIC,
FONT_X_GENERIC,
IMAGE_X_GENERIC,
PACKAGE_X_GENERIC,
TEXT_HTML,
TEXT_X_GENERIC,
TEXT_X_GENERIC_TEMPLATE,
TEXT_X_SCRIPT,
VIDEO_X_GENERIC,
X_OFFICE_ADDRESS_BOOK,
X_OFFICE_CALENDAR,
X_OFFICE_DOCUMENT,
X_OFFICE_PRESENTATION,
X_OFFICE_SPREADSHEET,
FOLDER,
FOLDER_REMOTE,
NETWORK_SERVER,
NETWORK_WORKGROUP,
START_HERE,
USER_DESKTOP,
USER_HOME,
USER_TRASH,
APPOINTMENT_MISSED,
APPOINTMENT_SOON,
AUDIO_VOLUME_HIGH,
AUDIO_VOLUME_LOW,
AUDIO_VOLUME_MEDIUM,
AUDIO_VOLUME_MUTED,
BATTERY_CAUTION,
BATTERY_LOW,
DIALOG_ERROR,
DIALOG_INFORMATION,
DIALOG_PASSWORD,
DIALOG_QUESTION,
DIALOG_WARNING,
FOLDER_DRAG_ACCEPT,
FOLDER_OPEN,
FOLDER_VISITING,
IMAGE_LOADING,
IMAGE_MISSING,
MAIL_ATTACHMENT,
MAIL_UNREAD,
MAIL_READ,
MAIL_REPLIED,
MAIL_SIGNED,
MAIL_SIGNED_VERIFIED,
MEDIA_PLAYLIST_REPEAT,
MEDIA_PLAYLIST_SHUFFLE,
NETWORK_ERROR,
NETWORK_IDLE,
NETWORK_OFFLINE,
NETWORK_RECEIVE,
NETWORK_TRANSMIT,
NETWORK_TRANSMIT_RECEIVE,
PRINTER_ERROR,
PRINTER_PRINTING,
SOFTWARE_UPDATE_AVAILABLE,
SOFTWARE_UPDATE_URGENT,
SYNC_ERROR,
SYNC_SYNCHRONIZING,
TASK_DUE,
TASK_PASSED_DUE,
USER_AWAY,
USER_IDLE,
USER_OFFLINE,
USER_ONLINE,
USER_TRASH_FULL,
WEATHER_CLEAR,
WEATHER_CLEAR_NIGHT,
WEATHER_FEW_CLOUDS,
WEATHER_FEW_CLOUDS_NIGHT,
WEATHER_FOG,
WEATHER_OVERCAST,
WEATHER_SEVERE_ALERT,
WEATHER_SHOWERS,
WEATHER_SHOWERS_SCATTERED,
WEATHER_SNOW,
WEATHER_STORM,
NULL
};
#endif

View File

@ -0,0 +1,27 @@
#include <Efreet.h>
#include <stdio.h>
#include <stdlib.h>
#include "comp.h"
int
main(void)
{
int i = 0, k;
const char *path;
efreet_init();
for (k = 0; k < LOOPS; k++)
{
for (i = 0; icons[i]; i++)
{
path = efreet_icon_path_find(THEME, icons[i], SIZE);
// printf("%s: %s\n", icons[i], (path ? path : "NOT FOUND"));
}
}
efreet_shutdown();
return 0;
}

View File

@ -0,0 +1,23 @@
#include <Efreet.h>
#include <stdio.h>
#include "comp.h"
int
main(void)
{
int k;
efreet_init();
for (k = 0; k < LOOPS; k++)
{
Efreet_Menu *menu;
menu = efreet_menu_get();
efreet_menu_free(menu);
}
efreet_shutdown();
return 0;
}

View File

@ -0,0 +1,2 @@
Makefile
Makefile.in

View File

@ -0,0 +1,18 @@
SUBDIRS = sub
MAINTAINERCLEANFILES = Makefile.in
testdir = $(pkgdatadir)/test
test_DATA = \
test.ini \
long.ini \
test.desktop \
test_type.desktop \
test.menu \
test_menu_slash_bad.menu \
entry.png \
entry \
preferences.menu \
test_garbage
EXTRA_DIST = $(test_DATA)

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,41 @@
<!DOCTYPE Menu PUBLIC
"-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Preferences</Name>
<Directory>Preferences.directory</Directory>
<AppDir>blah</AppDir>
<AppDir>/var/tmp</AppDir>
<Move>
<Old>Blah</Old
<New>Borp</New>
</Move>
<Menu>
<Name>House</Name>
<Directory>House.directory</Directory>
<Include>
<Category>House</Category>
<Category>Garden</Category>
</Include>
</Menu>
<Menu>
<Name>Mouse</Name>
<Directory>House.directory</Directory>
<Include>
<Category>House</Category>
<Category>Garden</Category>
</Include>
</Menu>
<Menu>
<Name>House</Name>
<Directory>House.directory</Directory>
<Include>
<Category>Cat</Category>
</Include>
</Menu>
</Menu>

View File

@ -0,0 +1,2 @@
Makefile
Makefile.in

View File

@ -0,0 +1,8 @@
MAINTAINERCLEANFILES = Makefile.in
testdir = $(pkgdatadir)/test/sub
test_DATA = \
test.desktop
EXTRA_DIST = $(test_DATA)

View File

@ -0,0 +1,5 @@
[Desktop Entry]
Type=Application
Name=Sub
Exec=subtest
Categories=Test

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=Efreet Test Application
GenericName=Test Application
Exec=efreet_test %F %i
Categories=Test;Enlightenment;
Icon=TestIcon
X-Test=Own key

View File

@ -0,0 +1,21 @@
# Comments should be ignored (and empty lines)
[contact]
Name=Foo Bar
Name[en_US]=English Foo Bar
Email= foo@bar.com
Email[de_DE] = foo@bar.de
Age = 30
TrueBoolean=true
FalseBoolean=false
InvalidBoolean=invalid
Escaped=line1\nline2\r\nline3\ttabbed \\ with a backslash\sand\sspaces
[AIM]
Username=foobar
# the next line has a single space. it should be skipped as well
[Jabber]
Username=foobar@bar.de

View File

@ -0,0 +1,52 @@
<!DOCTYPE Menu PUBLIC
"-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Applications</Name>
<Directory>Applications.directory</Directory>
<DefaultAppDirs/>
<DefaultDirectoryDirs/>
<MergeDir>applications-merged</MergeDir>
<LegacyDir>/usr/share/applnk</LegacyDir>
<DefaultLayout>
<Merge type="menus"/>
<Merge type="files"/>
<Separator/>
<Menuname>More</Menuname>
</DefaultLayout>
<Move>
<Old>Foo</Old>
<New>Bar</New>
<Old>Foo2</Old>
<New>Bar2</New>
</Move>
<Menu>
<Name>Preferences</Name>
<Directory>Preferences.directory</Directory>
<MergeFile>preferences.menu</MergeFile>
</Menu>
<Menu>
<Name>Office</Name>
<Directory>Office.directory</Directory>
<Include>
<Category>Office</Category>
</Include>
<Exclude>
<Filename>foo.desktop</Filename>
<And>
<Not>
<Filename>bar.desktop</Filename>
</Not>
</And>
</Exclude>
</Menu>
</Menu>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
<!DOCTYPE Menu PUBLIC
"-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Applications</Name>
<Directory>Applications.directory</Directory>
<!-- a comment
<!-- with a comment -->
<Or> This should be commented </Or>
-->
</Menu>

View File

@ -0,0 +1,11 @@
<!DOCTYPE Menu PUBLIC
"-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Applications/Bar</Name>
<Menu>
<Name>Preferences/Baz</Name>
</Menu>
</Menu>

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Type=My_Type
Name=Efreet Test Application
GenericName=Test Application
Exec=efreet_test %F %i
Categories=Test;Enlightenment;
Icon=TestIcon
X-Test=Own key

View File

@ -0,0 +1,143 @@
#include "Efreet.h"
#include <stdio.h>
#include <Ecore.h>
#include "ef_test.h"
#if 0
EAPI Efreet_Desktop *efreet_util_desktop_file_id_find(const char *file_id);
EAPI Eina_List *efreet_util_desktop_generic_name_glob_list(const char *glob);
EAPI Eina_List *efreet_util_desktop_comment_glob_list(const char *glob);
#endif
static void
check(void)
{
Eina_List *list;
Efreet_Desktop *desktop;
double start;
const char *id;
// EAPI char *efreet_util_path_to_file_id(const char *path);
start = ecore_time_get();
id = efreet_util_path_to_file_id("/usr/share/applications/gnome-panel.desktop");
if (id)
{
printf("efreet_util_path_to_file_id(/usr/share/applications/gnome-panel.desktop): %s %.6f\n", id, (ecore_time_get() - start));
}
else
printf("efreet_util_path_to_file_id(/usr/share/applications/gnome-panel.desktop): NULL %.6f\n", (ecore_time_get() - start));
//EAPI Efreet_Desktop *efreet_util_desktop_name_find(const char *name);
start = ecore_time_get();
desktop = efreet_util_desktop_name_find("Evolution");
if (desktop)
printf("efreet_util_desktop_name_find(Evolution): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
else
printf("efreet_util_desktop_name_find(Evolution): NULL %.6f\n", (ecore_time_get() - start));
efreet_desktop_free(desktop);
//EAPI Efreet_Desktop *efreet_util_desktop_generic_name_find(const char *generic_name);
start = ecore_time_get();
desktop = efreet_util_desktop_generic_name_find("Spreadsheet");
if (desktop)
printf("efreet_util_desktop_generic_name_find(Spreadsheet): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
else
printf("efreet_util_desktop_generic_name_find(Spreadsheet): NULL %.6f\n", (ecore_time_get() - start));
efreet_desktop_free(desktop);
//EAPI Efreet_Desktop *efreet_util_desktop_wm_class_find(const char *wmname, const char *wmclass);
start = ecore_time_get();
desktop = efreet_util_desktop_wm_class_find("Firefox", NULL);
if (desktop)
printf("efreet_util_desktop_wm_class_find(Firefox): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
else
printf("efreet_util_desktop_wm_class_find(Firefox): NULL %.6f\n", (ecore_time_get() - start));
efreet_desktop_free(desktop);
//EAPI Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec);
start = ecore_time_get();
desktop = efreet_util_desktop_exec_find("/usr/bin/update-manager");
if (desktop)
printf("efreet_util_desktop_exec_find(update-manager): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
else
printf("efreet_util_desktop_exec_find(update-manager): NULL %.6f\n", (ecore_time_get() - start));
efreet_desktop_free(desktop);
//EAPI Eina_List *efreet_util_desktop_name_glob_list(const char *glob);
start = ecore_time_get();
list = efreet_util_desktop_name_glob_list("Ubuntu*");
if (list)
{
EINA_LIST_FREE(list, desktop)
{
printf("efreet_util_desktop_name_glob_list(Ubuntu*): %s\n", desktop->name);
efreet_desktop_free(desktop);
}
}
printf("time: %.6f\n", (ecore_time_get() - start));
//EAPI Eina_List *efreet_util_desktop_mime_list(const char *mime);
start = ecore_time_get();
list = efreet_util_desktop_mime_list("application/ogg");
if (list)
{
EINA_LIST_FREE(list, desktop)
{
printf("efreet_util_desktop_mime_list(application/ogg): %s\n", desktop->name);
efreet_desktop_free(desktop);
}
}
printf("time: %.6f\n", (ecore_time_get() - start));
//EAPI Eina_List *efreet_util_desktop_exec_glob_list(const char *glob);
start = ecore_time_get();
list = efreet_util_desktop_exec_glob_list("*gnome*");
if (list)
{
EINA_LIST_FREE(list, desktop)
{
printf("efreet_util_desktop_exec_glob_list(*gnome*): %s\n", desktop->exec);
efreet_desktop_free(desktop);
}
}
printf("time: %.6f\n", (ecore_time_get() - start));
//EAPI Eina_List *efreet_util_desktop_categories_list(void);
start = ecore_time_get();
list = efreet_util_desktop_categories_list();
if (list)
{
EINA_LIST_FREE(list, id)
{
printf("efreet_util_desktop_categories_list(): %s\n", id);
}
}
printf("time: %.6f\n", (ecore_time_get() - start));
//EAPI Eina_List *efreet_util_desktop_category_list(const char *category);
start = ecore_time_get();
list = efreet_util_desktop_category_list("Graphics");
if (list)
{
EINA_LIST_FREE(list, desktop)
{
printf("efreet_util_desktop_category_list(Graphics): %s\n", desktop->name);
efreet_desktop_free(desktop);
}
}
printf("time: %.6f\n", (ecore_time_get() - start));
desktop = efreet_desktop_get("/opt/google/chrome/google-chrome.desktop");
if (desktop) efreet_desktop_free(desktop);
}
int
main(int argc __UNUSED__, char **argv __UNUSED__)
{
if (!efreet_init()) return 1;
check();
ecore_main_loop_begin();
efreet_shutdown();
return 0;
}

View File

@ -0,0 +1,307 @@
#include "Efreet.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int
ef_cb_efreet_data_home(void)
{
const char *tmp;
int ret = 1;
efreet_shutdown();
setenv("XDG_DATA_HOME", "/var/tmp", 1);
efreet_init();
tmp = efreet_data_home_get();
if (strcmp(tmp, "/var/tmp"))
{
printf("efreet_data_home_get() returned incorrect "
"value (%s) on XDG_DATA_HOME=/var/tmp\n", tmp);
ret = 0;
}
/* reset efreet here so we can set a new home dir */
efreet_shutdown();
unsetenv("XDG_DATA_HOME");
setenv("HOME", "/home/tmp", 1);
efreet_init();
tmp = efreet_data_home_get();
if (strcmp(tmp, "/home/tmp/.local/share"))
{
printf("efreet_data_home_get() returned incorrect "
"value (%s) on blank XDG_DATA_HOME\n", tmp);
ret = 0;
}
/* reset efreet here so we can set a new home dir */
efreet_shutdown();
unsetenv("XDG_DATA_HOME");
unsetenv("HOME");
#ifdef _WIN32
unsetenv("USERPROFILE");
#endif
efreet_init();
tmp = efreet_data_home_get();
if (strcmp(tmp, "/tmp/.local/share"))
{
printf("efreet_data_home_get() returned incorrect "
"value (%s) on blank XDG_DATA_HOME and blank HOME\n", tmp);
ret = 0;
}
return ret;
}
int
ef_cb_efreet_config_home(void)
{
const char *tmp;
int ret = 1;
efreet_shutdown();
setenv("XDG_CONFIG_HOME", "/var/tmp", 1);
efreet_init();
tmp = efreet_config_home_get();
if (strcmp(tmp, "/var/tmp"))
{
printf("efreet_config_home_get() returned incorrect "
"value (%s) on XDG_CONFIG_HOME=/var/tmp\n", tmp);
ret = 0;
}
/* reset efreet here so we can set a new home dir */
efreet_shutdown();
unsetenv("XDG_CONFIG_HOME");
setenv("HOME", "/home/tmp", 1);
efreet_init();
tmp = efreet_config_home_get();
if (strcmp(tmp, "/home/tmp/.config"))
{
printf("efreet_config_home_get() returned incorrect "
"value (%s) on blank XDG_CONFIG_HOME\n", tmp);
ret = 0;
}
/* reset efreet here so we can set a new home dir */
efreet_shutdown();
unsetenv("XDG_CONFIG_HOME");
unsetenv("HOME");
#ifdef _WIN32
unsetenv("USERPROFILE");
#endif
efreet_init();
tmp = efreet_config_home_get();
if (strcmp(tmp, "/tmp/.config"))
{
printf("efreet_config_home_get() returned incorrect "
"value (%s) on blank XDG_CONFIG_HOME and blank HOME\n", tmp);
ret = 0;
}
return ret;
}
int
ef_cb_efreet_cache_home(void)
{
const char *tmp;
int ret = 1;
efreet_shutdown();
setenv("XDG_CACHE_HOME", "/var/tmp", 1);
efreet_init();
tmp = efreet_cache_home_get();
if (strcmp(tmp, "/var/tmp"))
{
printf("efreet_cache_home_get() returned incorrect "
"value (%s) on XDG_CACHE_HOME=/var/tmp\n", tmp);
ret = 0;
}
/* reset efreet here so we can set a new home dir */
efreet_shutdown();
unsetenv("XDG_CACHE_HOME");
setenv("HOME", "/home/tmp", 1);
efreet_init();
tmp = efreet_cache_home_get();
if (strcmp(tmp, "/home/tmp/.cache"))
{
printf("efreet_cache_home_get() returned incorrect "
"value (%s) on blank XDG_CACHE_HOME\n", tmp);
ret = 0;
}
/* reset efreet here so we can set a new home dir */
efreet_shutdown();
unsetenv("XDG_CACHE_HOME");
unsetenv("HOME");
#ifdef _WIN32
unsetenv("USERPROFILE");
#endif
efreet_init();
tmp = efreet_cache_home_get();
if (strcmp(tmp, "/tmp/.cache"))
{
printf("efreet_cache_home_get() returned incorrect "
"value (%s) on blank XDG_CACHE_HOME and blank HOME\n", tmp);
ret = 0;
}
return ret;
}
int
ef_cb_efreet_data_dirs(void)
{
Eina_List *tmp, *l;
int ret = 1, i;
char dirs[128], *val;
char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
char *def_vals[] = {PACKAGE_DATA_DIR, "/usr/share", "/usr/local/share", NULL};
dirs[0] = '\0';
for (i = 0; vals[i]; i++)
{
if (i > 0) strcat(dirs, ":");
strcat(dirs, vals[i]);
}
efreet_shutdown();
setenv("XDG_DATA_DIRS", dirs, 1);
efreet_init();
i = 0;
tmp = efreet_data_dirs_get();
EINA_LIST_FOREACH(tmp, l, val)
{
if (!vals[i])
{
printf("efreet_data_dirs_get() returned more values then it "
"should have given %s as input\n", dirs);
ret = 0;
break;
}
if (strcmp(val, vals[i]))
{
printf("efreet_data_dirs_get() returned incorrect value (%s) when "
"%s set\n", val, dirs);
ret = 0;
}
i++;
}
efreet_shutdown();
unsetenv("XDG_DATA_DIRS");
efreet_init();
i = 0;
tmp = efreet_data_dirs_get();
if (eina_list_count(tmp) != 3)
{
printf("efreet_data_dirs_get() nodes is differnet from expected default\n");
ret = 0;
}
EINA_LIST_FOREACH(tmp, l, val)
{
if (!def_vals[i])
{
printf("efreet_data_dirs_get() returned more values then it "
"should have given %s as input\n", dirs);
ret = 0;
break;
}
if (strcmp(val, def_vals[i]))
{
printf("efreet_data_dirs_get() returned incorrect value (%s) when "
"XDG_DATA_DIRS= is set %s\n", val, def_vals[i]);
ret = 0;
}
i++;
}
return ret;
}
int
ef_cb_efreet_config_dirs(void)
{
Eina_List *tmp, *l;
int ret = 1, i;
char dirs[128], *val;
char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
char *def_vals[] = {"/etc/xdg", NULL};
dirs[0] = '\0';
for (i = 0; vals[i]; i++)
{
if (i > 0) strcat(dirs, ":");
strcat(dirs, vals[i]);
}
efreet_shutdown();
setenv("XDG_CONFIG_DIRS", dirs, 1);
efreet_init();
i = 0;
tmp = efreet_config_dirs_get();
EINA_LIST_FOREACH(tmp, l, val)
{
if (!vals[i])
{
printf("efreet_config_dirs_get() returned more values then it "
"should have given %s as input\n", dirs);
ret = 0;
break;
}
if (strcmp(val, vals[i]))
{
printf("efreet_config_dirs_get() returned incorrect value (%s) when "
"%s set\n", val, dirs);
ret = 0;
}
i++;
}
efreet_shutdown();
unsetenv("XDG_CONFIG_DIRS");
efreet_init();
i = 0;
tmp = efreet_config_dirs_get();
EINA_LIST_FOREACH(tmp, l, val)
{
if (!def_vals[i])
{
printf("efreet_config_dirs_get() returned more values then it "
"should have given %s as input\n", dirs);
ret = 0;
break;
}
if (strcmp(val, def_vals[i]))
{
printf("efreet_config_dirs_get() returned incorrect value (%s) when "
"XDG_CONFIG_DIRS= is set\n", val);
ret = 0;
}
i++;
}
return ret;
}

View File

@ -0,0 +1,401 @@
#include "Efreet.h"
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include "ef_test.h"
static void *_cb_command(void *data, Efreet_Desktop *desktop, char *exec, int remaining);
int
ef_cb_desktop_parse(void)
{
Efreet_Desktop *desktop;
Eina_List *l;
int ret = 1;
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
if (!desktop)
{
printf("No desktop found.\n");
return 0;
}
if (!desktop->name || strcmp(desktop->name, "Efreet Test Application"))
{
printf("Invalid Name\n");
ret = 0;
}
if (!desktop->generic_name ||
strcmp(desktop->generic_name, "Test Application"))
{
printf("Incorrent GenericName\n");
ret = 0;
}
if (!desktop->exec || strcmp(desktop->exec, "efreet_test %F %i"))
{
printf("Incorrect Exec (%s)\n", (desktop->exec ? desktop->exec : "(null)"));
ret = 0;
}
if (desktop->categories)
{
const char *categories[] = {"Test", "Enlightenment"};
const char *cat;
int num_categories = 2, i = 0;
EINA_LIST_FOREACH(desktop->categories, l, cat)
{
if (i >= num_categories)
{
printf("Too many categories found.\n");
ret = 0;
break;
}
if (!cat || !categories[i] || strcmp(cat, categories[i]))
{
printf("Expected category %s, found %s\n", categories[i], cat);
ret = 0;
}
i++;
}
}
else ret = 0;
efreet_desktop_free(desktop);
return ret;
}
#if 0
int
ef_cb_desktop_file_id(void)
{
Efreet_Desktop *desktop;
int ret = 1;
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
if (desktop)
{
const char *id;
int i = 0;
struct {
char *dir;
int legacy;
char *prefix;
char *expected;
} tests[] = {
{PACKAGE_DATA_DIR"/test/", 0, NULL, "test.desktop"},
{PACKAGE_DATA_DIR"/", 0, NULL, "test-test.desktop"},
{PACKAGE_DATA_DIR"/", 1, NULL, "test.desktop"},
{PACKAGE_DATA_DIR"/", 1, "prefix", "prefix-test.desktop"},
{NULL, 0, NULL, NULL}
};
for (i = 0; tests[i].dir != NULL; i++)
{
id = efreet_desktop_id_get(desktop,
tests[i].dir,
tests[i].legacy,
tests[i].prefix);
if (!id || strcmp(id, tests[i].expected))
{
printf("Expecting id: %s, got: %s\n", tests[i].expected, id);
ret = 0;
}
if (id) eina_stringshare_del(id);
}
}
else
ret = 0;
return ret;
}
#endif
int
ef_cb_desktop_save(void)
{
Efreet_Desktop *desktop;
printf("\n");
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
if (!desktop)
{
printf("Failed to get Desktop file\n");
return 0;
}
printf("save data: %d\n", efreet_desktop_save(desktop));
efreet_desktop_free(desktop);
desktop = efreet_desktop_empty_new("/tmp/test.desktop");
desktop->name = strdup("Efreet Test Application");
desktop->type = EFREET_DESKTOP_TYPE_APPLICATION;
desktop->generic_name = strdup("Test Application");
desktop->exec = strdup("efreet_test");
desktop->categories = NULL;
desktop->categories = eina_list_append(desktop->categories, eina_stringshare_add("Test"));
desktop->categories = eina_list_append(desktop->categories, eina_stringshare_add("Enlightenment"));
printf("save test: %d\n", efreet_desktop_save(desktop));
unlink("/tmp/test.desktop");
efreet_desktop_free(desktop);
return 1;
}
typedef struct
{
Eina_List *expected;
int error;
char type;
} Test_Info;
int
ef_cb_desktop_command_get(void)
{
Efreet_Desktop *desktop;
Eina_List *files, *expected;
char olddir[PATH_MAX];
Test_Info *info;
int ret;
if (getcwd(olddir, PATH_MAX) != 0) ret = 0;
if (chdir("/") != 0) ret = 0;
printf("\n");
desktop = efreet_desktop_empty_new("test.desktop");
desktop->name = strdup("App Name");
desktop->icon = strdup("icon.png");
files = NULL;
files = eina_list_append(files, "/tmp/absolute_path");
files = eina_list_append(files, "relative_path");
files = eina_list_append(files, "file:///tmp/absolute_uri");
files = eina_list_append(files, "file:relative_uri");
info = NEW(Test_Info, 1);
expected = NULL;
info->error = 0;
/* test single full path */
info->type = 'f';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %f");
expected = eina_list_append(expected, "app '/tmp/absolute_path'");
expected = eina_list_append(expected, "app '/relative_path'");
expected = eina_list_append(expected, "app '/tmp/absolute_uri'");
expected = eina_list_append(expected, "app '/relative_uri'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
/* test single uri */
info->type = 'u';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %u");
expected = eina_list_append(expected, "app 'file:///tmp/absolute_path'");
expected = eina_list_append(expected, "app 'file:///relative_path'");
expected = eina_list_append(expected, "app 'file:///tmp/absolute_uri'");
expected = eina_list_append(expected, "app 'file:///relative_uri'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
/* test single dir */
#if 0
info->type = 'd';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %d");
expected = eina_list_append(expected, "app '/tmp'");
expected = eina_list_append(expected, "app '/'");
expected = eina_list_append(expected, "app '/tmp'");
expected = eina_list_append(expected, "app '/'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
#endif
/* test single names */
#if 0
info->type = 'n';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %n");
expected = eina_list_append(expected, "app 'absolute_path'");
expected = eina_list_append(expected, "app 'relative_path'");
expected = eina_list_append(expected, "app 'absolute_uri'");
expected = eina_list_append(expected, "app 'relative_uri'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
#endif
/* test multiple fullpaths */
info->type = 'F';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %F");
expected = eina_list_append(expected, "app '/tmp/absolute_path' '/relative_path' '/tmp/absolute_uri' '/relative_uri'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
/* test multiple URIs */
info->type = 'U';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %U");
expected = eina_list_append(expected, "app 'file:///tmp/absolute_path' 'file:///relative_path' 'file:///tmp/absolute_uri' 'file:///relative_uri'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
/* test multiple dirs */
#if 0
info->type = 'D';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %D");
expected = eina_list_append(expected, "app '/tmp' '/' '/tmp' '/'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
#endif
/* test multiple names */
#if 0
info->type = 'N';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %N");
expected = eina_list_append(expected, "app 'absolute_path' 'relative_path' 'absolute_uri' 'relative_uri'");
info->expected = expected;
efreet_desktop_command_get(desktop, files, _cb_command, info);
expected = eina_list_free(expected);
#endif
/* test icon appending */
info->type = 'i';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %i");
expected = eina_list_append(expected, "app --icon 'icon.png'");
info->expected = expected;
efreet_desktop_command_get(desktop, NULL, _cb_command, info);
expected = eina_list_free(expected);
/* test app name */
info->type = 'c';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %c");
expected = eina_list_append(expected, "app 'App Name'");
info->expected = expected;
efreet_desktop_command_get(desktop, NULL, _cb_command, info);
expected = eina_list_free(expected);
/* test desktop path */
info->type = 'k';
IF_FREE(desktop->exec);
desktop->exec = strdup("app %k");
expected = eina_list_append(expected, "app 'test.desktop'");
info->expected = expected;
efreet_desktop_command_get(desktop, NULL, _cb_command, info);
eina_list_free(expected);
/* clean up */
efreet_desktop_free(desktop);
eina_list_free(files);
if (chdir(olddir) != 0) ret = 0;
ret = info->error > 0 ? 0 : 1;
free(info);
return ret;
}
static void *
_cb_command(void *data, Efreet_Desktop *desktop __UNUSED__,
char *exec, int remaining __UNUSED__)
{
Test_Info *info = data;
char *expected;
expected = eina_list_data_get(info->expected);
info->expected = eina_list_demote_list(info->expected, info->expected);
if (!expected)
{
printf(" ERROR: (%%%c) got \"%s\", expected nothing\n", info->type, exec);
info->error++;
}
else
{
if (strcmp(exec, expected))
{
printf(" ERROR: (%%%c) got \"%s\", expected \"%s\"\n", info->type, exec, expected);
info->error++;
}
}
free(exec);
return NULL;
}
static void *
cb_type_parse(Efreet_Desktop *desktop __UNUSED__, Efreet_Ini *ini)
{
const char *val;
val = efreet_ini_string_get(ini, "X-Test");
if (!val) return NULL;
return (void *)strdup(val);
}
int
ef_cb_desktop_type_parse(void)
{
Efreet_Desktop *desktop;
int my_type;
char *val;
int ret = 1;
/* add my custom desktop type to efreet */
my_type = efreet_desktop_type_add("My_Type", cb_type_parse, NULL,
(Efreet_Desktop_Type_Free_Cb)free);
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test_type.desktop");
if (!desktop)
{
printf("No desktop found.\n");
return 0;
}
if (desktop->type != my_type)
{
printf("Invalid type returned in desktop");
ret = 0;
}
val = (char *)efreet_desktop_type_data_get(desktop);
if (!val || strcmp(val, "Own key"))
{
printf("Invalid value of custom key (%s).\n", val);
ret = 0;
}
efreet_desktop_free(desktop);
return ret;
}

View File

@ -0,0 +1,605 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "Efreet.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
#include <Ecore.h>
#include <Ecore_File.h>
#define SIZE 128
#define THEME "Tango"
#define FREE(x) do { free(x); x = NULL; } while (0);
static Eina_Bool _hash_keys(Eina_Hash *hash, const char *key, void *list);
static void ef_icon_theme_themes_find(const char *search_dir,
Eina_Hash *themes);
static void ef_icons_find(Efreet_Icon_Theme *theme, Eina_Hash *icons);
static void ef_read_dir(const char *dir, Eina_Hash *icons);
int
ef_cb_efreet_icon_theme(void)
{
int ret = 1;
const char *tmp;
unsetenv("XDG_DATA_HOME");
efreet_shutdown();
putenv("HOME=/var/tmp");
efreet_init();
tmp = efreet_icon_user_dir_get();
if (strcmp(tmp, "/var/tmp/.local/share/icons"))
{
printf("efreet_icon_user_dir_get() returned incorrect "
"value (%s) on HOME=/var/tmp\n", tmp);
ret = 0;
}
efreet_shutdown();
unsetenv("HOME");
#ifdef _WIN32
unsetenv("USERPROFILE");
#endif
efreet_init();
tmp = efreet_icon_user_dir_get();
if (strcmp(tmp, "/tmp/.local/share/icons"))
{
printf("efreet_icon_user_dir_get() returned incorrect "
"value (%s) on HOME=\n", tmp);
ret = 0;
}
return ret;
}
static Eina_Bool
_hash_keys(Eina_Hash *hash __UNUSED__, const char *key, void *list)
{
Eina_List **l = list;
*l = eina_list_append(*l, key);
return EINA_TRUE;
}
int
ef_cb_efreet_icon_theme_list(void)
{
int ret = 1;
Eina_List *themes;
Eina_List *icon_dirs;
Eina_List *l;
Eina_Hash *dirs;
Eina_Iterator *it;
Efreet_Icon_Theme *theme;
const char *dir;
char buf[PATH_MAX];
dirs = eina_hash_string_superfast_new(free);
icon_dirs = efreet_data_dirs_get();
ef_icon_theme_themes_find(efreet_icon_user_dir_get(), dirs);
EINA_LIST_FOREACH(icon_dirs, l, dir)
{
snprintf(buf, sizeof(buf), "%s/icons", dir);
ef_icon_theme_themes_find(buf, dirs);
}
EINA_LIST_FOREACH(icon_dirs, l, dir)
{
snprintf(buf, sizeof(buf), "%s/pixmaps", dir);
ef_icon_theme_themes_find(buf, dirs);
}
ef_icon_theme_themes_find("/usr/share/pixmaps", dirs);
themes = efreet_icon_theme_list_get();
EINA_LIST_FOREACH(themes, l, theme)
{
if ((eina_hash_find(dirs, theme->name.internal)))
eina_hash_del(dirs, theme->name.internal, NULL);
else
{
printf("efreet_icon_theme_list_get() returned %s which we didn't "
"see when scanning the directories.\n", theme->name.internal);
ret = 0;
}
}
while (themes)
{
themes = eina_list_remove_list(themes, themes);
}
themes = NULL;
it = eina_hash_iterator_key_new(dirs);
eina_iterator_foreach(it, EINA_EACH_CB(_hash_keys), &themes);
eina_iterator_free(it);
if (eina_list_count(themes) > 0)
{
printf("efreet_icon_theme_list_get() missed: ");
EINA_LIST_FOREACH(themes, l, dir)
printf("%s ", dir);
printf("\n");
ret = 0;
}
while (themes)
{
themes = eina_list_remove_list(themes, themes);
}
eina_hash_free(dirs);
return ret;
}
static void
ef_icon_theme_themes_find(const char *search_dir, Eina_Hash *themes)
{
Eina_List *dirs;
char *dir;
if (!search_dir || !themes) return;
dirs = ecore_file_ls(search_dir);
if (!dirs) return;
while ((dir = eina_list_data_get(dirs)))
{
char p[PATH_MAX];
dirs = eina_list_remove_list(dirs, dirs);
/* if we've already added the theme we're done */
if (eina_hash_find(themes, dir))
{
free(dir);
continue;
}
/* if the index.theme file exists we open it and look for the hidden
* flag. */
snprintf(p, sizeof(p), "%s/%s/index.theme", search_dir, dir);
if (ecore_file_exists(p))
{
Efreet_Ini *ini;
char *d;
int skip = 0;
ini = efreet_ini_new(p);
efreet_ini_section_set(ini, "Icon Theme");
if (efreet_ini_boolean_get(ini, "Hidden")) skip = 1;
if (!efreet_ini_localestring_get(ini, "Name")) skip = 1;
efreet_ini_free(ini);
if (!skip)
{
d = strdup(dir);
eina_hash_add(themes, dir, d);
}
}
free(dir);
}
}
const char *system_icons[] =
{
"address-book-new",
"application-exit",
"appointment-new",
"contact-new",
"dialog-apply",
"dialog-cancel",
"dialog-close",
"dialog-ok",
"document-new",
"document-open",
"document-open-recent",
"document-page-setup",
"document-print",
"document-print-preview",
"document-properties",
"document-revert",
"document-save",
"document-save-as",
"edit-copy",
"edit-cut",
"edit-delete",
"edit-find",
"edit-find-replace",
"edit-paste",
"edit-redo",
"edit-select-all",
"edit-undo",
"format-indent-less",
"format-indent-more",
"format-justify-center",
"format-justify-fill",
"format-justify-left",
"format-justify-right",
"format-text-direction-ltr",
"format-text-direction-rtl",
"format-text-bold",
"format-text-italic",
"format-text-underline",
"format-text-strikethrough",
"go-bottom",
"go-down",
"go-first",
"go-home",
"go-jump",
"go-last",
"go-next",
"go-previous",
"go-top",
"go-up",
"help-about",
"help-contents",
"help-faq",
"insert-image",
"insert-link",
"insert-object",
"insert-text",
"list-add",
"list-remove",
"mail-forward",
"mail-mark-important",
"mail-mark-junk",
"mail-mark-notjunk",
"mail-mark-read",
"mail-mark-unread",
"mail-message-new",
"mail-reply-all",
"mail-reply-sender",
"mail-send-receive",
"media-eject",
"media-playback-pause",
"media-playback-start",
"media-playback-stop",
"media-record",
"media-seek-backward",
"media-seek-forward",
"media-skip-backward",
"media-skip-forward",
"system-lock-screen",
"system-log-out",
"system-run",
"system-search",
"system-search",
"tools-check-spelling",
"view-fullscreen",
"view-refresh",
"view-sort-ascending",
"view-sort-descending",
"window-close",
"window-new",
"zoom-best-fit",
"zoom-in",
"zoom-original",
"zoom-out",
"process-working",
"accessories-calculator",
"accessories-character-map",
"accessories-dictionary",
"accessories-text-editor",
"help-browser",
"multimedia-volume-control",
#if 0
"preferences-desktop-accessibility",
"preferences-desktop-font",
"preferences-desktop-keyboard",
"preferences-desktop-locale",
"preferences-desktop-multimedia",
"preferences-desktop-screensaver",
"preferences-desktop-theme",
"preferences-desktop-wallpaper",
"system-file-manager",
"system-software-update",
"utilities-terminal",
"applications-accessories",
"applications-development",
"applications-games",
"applications-graphics",
"applications-internet",
"applications-multimedia",
"applications-office",
"applications-other",
"applications-system",
"applications-utilities",
"preferences-desktop",
"preferences-desktop-accessibility",
"preferences-desktop-peripherals",
"preferences-desktop-personal",
"preferences-other",
"preferences-system",
"preferences-system-network",
"system-help",
"audio-card",
"audio-input-microphone",
"battery",
"camera-photo",
"camera-video",
"computer",
"drive-cdrom",
"drive-harddisk",
"drive-removable-media",
"input-gaming",
"input-keyboard",
"input-mouse",
"media-cdrom",
"media-floppy",
"multimedia-player",
"multimedia-player",
"network-wired",
"network-wireless",
"printer",
"emblem-default",
"emblem-documents",
"emblem-downloads",
"emblem-favorite",
"emblem-important",
"emblem-mail",
"emblem-photos",
"emblem-readonly",
"emblem-shared",
"emblem-symbolic-link",
"emblem-synchronized",
"emblem-system",
"emblem-unreadable",
"face-angel",
"face-crying",
"face-devil-grin",
"face-devil-sad",
"face-glasses",
"face-kiss",
"face-monkey",
"face-plain",
"face-sad",
"face-smile",
"face-smile-big",
"face-smirk",
"face-surprise",
"face-wink",
"application-x-executable",
"audio-x-generic",
"font-x-generic",
"image-x-generic",
"package-x-generic",
"text-html",
"text-x-generic",
"text-x-generic-template",
"text-x-script",
"video-x-generic",
"x-office-address-book",
"x-office-calendar",
"x-office-document",
"x-office-presentation",
"x-office-spreadsheet",
"folder",
"folder-remote",
"network-server",
"network-workgroup",
"start-here",
"user-desktop",
"user-home",
"user-trash",
"appointment-missed",
"appointment-soon",
"audio-volume-high",
"audio-volume-low",
"audio-volume-medium",
"audio-volume-muted",
"battery-caution",
"battery-low",
"dialog-error",
"dialog-information",
"dialog-password",
"dialog-question",
"dialog-warning",
"folder-drag-accept",
"folder-open",
"folder-visiting",
"image-loading",
"image-missing",
"mail-attachment",
"mail-unread",
"mail-read",
"mail-replied",
"mail-signed",
"mail-signed-verified",
"media-playlist-repeat",
"media-playlist-shuffle",
"network-error",
"network-idle",
"network-offline",
"network-receive",
"network-transmit",
"network-transmit-receive",
"printer-error",
"printer-printing",
"software-update-available",
"software-update-urgent",
"sync-error",
"sync-synchronizing",
"task-due",
"task-passed-due",
"user-away",
"user-idle",
"user-offline",
"user-online",
"user-trash-full",
"weather-clear",
"weather-clear-night",
"weather-few-clouds",
"weather-few-clouds-night",
"weather-fog",
"weather-overcast",
"weather-severe-alert",
"weather-showers",
"weather-showers-scattered",
"weather-snow",
"weather-storm",
#endif
NULL
};
int
ef_cb_efreet_icon_match(void)
{
int i, ret = 1;
Eina_Hash *icon_hash;
Efreet_Icon_Theme *theme;
theme = efreet_icon_theme_find(THEME);
icon_hash = eina_hash_string_superfast_new(free);
ef_icons_find(theme, icon_hash);
double start = ecore_time_get();
for (i = 0; system_icons[i]; i++)
{
const char *path;
char *p, *s;
path = efreet_icon_path_find(THEME, system_icons[i], SIZE);
if (!path)
{
#if 1
if (eina_hash_find(icon_hash, system_icons[i]))
{
printf("NOT FOUND %s\n", system_icons[i]);
ret = 0;
}
#endif
continue;
}
else if (!eina_hash_find(icon_hash, system_icons[i]))
{
printf("Found icon not in hash: %s\n", system_icons[i]);
}
p = strdup(path);
s = strrchr(p, '.');
if (s) *s = '\0';
s = strrchr(p, '/');
if (s) s++;
if (s && strcmp(s, system_icons[i]))
{
printf("Name mismatch name (%s) vs ef (%s)\n", system_icons[i], s);
ret = 0;
}
free(p);
}
printf("Time: %f\n", (ecore_time_get() - start));
eina_hash_free(icon_hash);
start = ecore_time_get();
for (i = 0; system_icons[i]; i++)
{
const char *path;
char *p, *s;
path = efreet_icon_path_find(THEME, system_icons[i], SIZE);
if (!path) continue;
p = strdup(path);
s = strrchr(p, '.');
if (s) *s = '\0';
s = strrchr(p, '/');
if (s) s++;
if (s && strcmp(s, system_icons[i]))
{
printf("Name mismatch name (%s) vs ef (%s)\n", system_icons[i], s);
ret = 0;
}
free(p);
}
printf("Time: %f\n", (ecore_time_get() - start));
return ret;
}
static void
ef_icons_find(Efreet_Icon_Theme *theme, Eina_Hash *icons)
{
Eina_List *l, *ll;
char path[PATH_MAX];
const char *theme_path;
if (!theme || !icons) return;
EINA_LIST_FOREACH(theme->paths, l, theme_path)
{
Efreet_Icon_Theme_Directory *dir;
EINA_LIST_FOREACH(theme->directories, ll, dir)
{
snprintf(path, sizeof(path), "%s/%s/", theme_path, dir->name);
ef_read_dir(path, icons);
}
}
if (theme->inherits)
{
Efreet_Icon_Theme *parent_theme;
char *parent;
EINA_LIST_FOREACH(theme->inherits, l, parent)
{
parent_theme = efreet_icon_theme_find(parent);
if (parent_theme)
ef_icons_find(parent_theme, icons);
}
}
else if (theme->valid && strcmp(theme->name.internal, "hicolor"))
{
Efreet_Icon_Theme *parent_theme;
parent_theme = efreet_icon_theme_find("hicolor");
if (parent_theme)
ef_icons_find(parent_theme, icons);
}
ef_read_dir("/usr/share/pixmaps", icons);
}
static void
ef_read_dir(const char *dir, Eina_Hash *icons)
{
Eina_List *files;
char *file;
if (!dir || !icons) return;
files = ecore_file_ls(dir);
if (!files) return;
while ((file = eina_list_data_get(files)))
{
char *p;
files = eina_list_remove_list(files, files);
p = strrchr(file, '.');
if (!p)
{
FREE(file);
continue;
}
if (!strcmp(p, ".png") || !strcmp(p, ".xpm"))
{
*p = '\0';
eina_hash_add(icons, file, strdup(file));
}
FREE(file);
}
}

View File

@ -0,0 +1,174 @@
#include "Efreet.h"
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int
ef_cb_ini_parse(void)
{
int ret = 1;
Efreet_Ini *ini;
putenv("LC_ALL=en_US");
ini = efreet_ini_new(PACKAGE_DATA_DIR"/test/test.ini");
if (!ini)
{
printf("efreet_ini_parse() Failed to initialize Efreet_Ini\n");
return 0;
}
if (efreet_ini_section_set(ini, "contact"))
{
const char *val;
int ival;
unsigned int bval;
val = efreet_ini_string_get(ini, "Name");
if (!val || strcmp(val, "Foo Bar"))
{
printf("efreet_ini_string_get() Name parsed incorrectly\n");
ret = 0;
}
val = efreet_ini_localestring_get(ini, "Name");
if (!val || strcmp(val, "English Foo Bar"))
{
printf("efreet_ini_localestring_get() Name parsed incorrectly\n");
ret = 0;
}
val = efreet_ini_string_get(ini, "Email");
if (!val || strcmp(val, "foo@bar.com"))
{
printf("efreet_ini_string_get() Email parsed incorrectly\n");
ret = 0;
}
val = efreet_ini_localestring_get(ini, "Email");
if (!val || strcmp(val, "foo@bar.com"))
{
printf("efreet_ini_localestring_get() Email parsed incorrectly\n");
ret = 0;
}
ival = efreet_ini_int_get(ini, "Age");
if (ival != 30)
{
printf("efreet_ini_int_get() Age parsed incorrectly\n");
ret = 0;
}
bval = efreet_ini_boolean_get(ini, "TrueBoolean");
if (!bval)
{
printf("efreet_ini_boolean_get() TrueBoolean parsed incorrectly\n");
ret = 0;
}
bval = efreet_ini_boolean_get(ini, "FalseBoolean");
if (bval)
{
printf("efreet_ini_boolean_get() FalseBoolean parsed incorrectly\n");
ret = 0;
}
bval = efreet_ini_boolean_get(ini, "InvalidBoolean");
if (bval)
{
printf("efreet_ini_boolean_get() InvalidBoolean parsed incorrectly\n");
ret = 0;
}
val = efreet_ini_string_get(ini, "Escaped");
if (!val || strcmp(val, "line1\nline2\r\nline3\ttabbed \\ with a backslash and spaces"))
{
printf("efreet_ini_unescape() improperly unescaped value\n");
ret = 0;
}
}
else
{
printf("efreet_ini_section_set() Failed to set 'contact' section\n");
ret = 0;
}
efreet_ini_free(ini);
return ret;
}
int
ef_cb_ini_long_line(void)
{
Efreet_Ini *ini;
int ret = 1;
struct
{
char *key;
int len;
} tests[] = {
{"key", 5099},
{"key2", 5099},
{NULL, 0}
};
ini = efreet_ini_new(PACKAGE_DATA_DIR"/test/long.ini");
if (!ini)
{
printf("Ini failed to parse.\n");
ret = 0;
}
if (ret) ret = efreet_ini_section_set(ini, "section");
if (ret)
{
const char *val;
int i, len;
for (i = 0; tests[i].key; i++)
{
val = efreet_ini_string_get(ini, tests[i].key);
if (val)
{
len = strlen(val);
if (len != tests[i].len)
{
printf("Invalid long line parsing. Value length: %d (expected %d)\n", len, tests[i].len);
ret = 0;
}
}
else
{
printf("Key missing: %s.", tests[i].key);
ret = 0;
}
}
}
else
{
printf("Section missing: 'section'.");
}
if (ini) efreet_ini_free(ini);
return ret;
}
int
ef_cb_ini_garbage(void)
{
Efreet_Ini *ini;
int ret = 1;
ini = efreet_ini_new(PACKAGE_DATA_DIR"/test/test_garbage");
if (!ini)
{
printf("Ini failed to parse.\n");
return 0;
}
if (ini->data) ret = 0;
efreet_ini_free(ini);
return ret;
}

View File

@ -0,0 +1,85 @@
#include "Efreet.h"
#include "efreet_private.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
ef_cb_locale(void)
{
int ret = 1, i;
struct
{
char *lc_message;
char *lang;
char *country;
char *modifier;
} langs[] = {
/* these are ordered such that when we move from LANG to LC_MESSAGES
* the LANG env will still be effect. Same with moving from
* LC_MESSAGES to LANG */
{"LANG=", NULL, NULL, NULL},
{"LANG=en", "en", NULL, NULL},
{"LANG=en@Latn", "en", NULL, "Latn"},
{"LANG=en_US", "en", "US", NULL},
{"LANG=en_US@Latn", "en", "US", "Latn"},
{"LANG=en_US.blah@Latn", "en", "US", "Latn"},
{"LC_MESSAGES=", "en", "US", "Latn"}, /* This will fallback to LANG */
{"LC_MESSAGES=fr", "fr", NULL, NULL},
{"LC_MESSAGES=fr@Blah", "fr", NULL, "Blah"},
{"LC_MESSAGES=fr_FR", "fr", "FR", NULL},
{"LC_MESSAGES=fr_FR@Blah", "fr", "FR", "Blah"},
{"LC_MESSAGES=fr_FR.Foo@Blah", "fr", "FR", "Blah"},
{"LC_ALL=", "fr", "FR", "Blah"}, /* this will fallback to LC_MESSAGES */
{"LC_ALL=sr", "sr", NULL, NULL},
{"LC_ALL=sr@Ret", "sr", NULL, "Ret"},
{"LC_ALL=sr_YU", "sr", "YU", NULL},
{"LC_ALL=sr_YU@Ret", "sr", "YU", "Ret"},
{"LC_ALL=sr_YU.ssh@Ret", "sr", "YU", "Ret"},
{NULL, NULL, NULL, NULL}
};
/* reset everything to blank */
putenv("LC_ALL=");
putenv("LC_MESSAGES=");
putenv("LANG=");
for (i = 0; langs[i].lc_message; i++)
{
const char *tmp;
putenv(langs[i].lc_message);
tmp = efreet_lang_get();
if ((langs[i].lang && (!tmp || strcmp(tmp, langs[i].lang)))
|| (!langs[i].lang && tmp))
{
printf("efreet_lang_get() is wrong (%s) with %s\n",
tmp, langs[i].lang);
ret = 0;
}
tmp = efreet_lang_country_get();
if ((langs[i].country && (!tmp || strcmp(tmp, langs[i].country)))
|| (!langs[i].country && tmp))
{
printf("efreet_lang_country_get() is wrong (%s) with %s\n",
tmp, langs[i].lang);
ret = 0;
}
tmp = efreet_lang_modifier_get();
if ((langs[i].modifier && (!tmp || strcmp(tmp, langs[i].modifier)))
|| (!langs[i].modifier && tmp))
{
printf("efreet_lang_modifier_get() is wrong with %s with %s\n",
tmp, langs[i].lang);
ret = 0;
}
efreet_shutdown();
efreet_init();
}
return ret;
}

View File

@ -0,0 +1,150 @@
#include "Efreet.h"
#include "config.h"
#include <stdio.h>
#include <unistd.h>
#if 0
static void
ef_menu_desktop_exec(Efreet_Menu *menu)
{
Eina_List *l;
if (menu->entries)
{
Efreet_Desktop *desktop;
EINA_LIST_FOREACH(menu->entries, l, desktop)
efreet_desktop_exec(desktop, NULL);
}
if (menu->sub_menus)
{
Efreet_Menu *sub_menu;
EINA_LIST_FOREACH(menu->sub_menus, l, sub_menu)
ef_menu_desktop_exec(sub_menu);
}
}
#endif
int
ef_cb_menu_get(void)
{
Efreet_Menu *menu;
menu = efreet_menu_get();
// menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test.menu");
if (!menu)
{
printf("efreet_menu_get() returned NULL\n");
return 0;
}
printf("\n");
efreet_menu_dump(menu, "");
efreet_menu_free(menu);
return 1;
}
int
ef_cb_menu_with_slashes(void)
{
Efreet_Menu *menu;
menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test_menu_slash_bad.menu");
if (menu)
{
printf("efreet_menu_get() didn't return NULL\n");
return 0;
}
return 1;
}
int
ef_cb_menu_save(void)
{
Efreet_Menu *menu;
int ret;
// menu = efreet_menu_get();
menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test.menu");
if (!menu)
{
printf("efreet_menu_get() returned NULL\n");
return 0;
}
unlink("/tmp/test.menu");
ret = efreet_menu_save(menu, "/tmp/test.menu");
efreet_menu_free(menu);
return ret;
}
int
ef_cb_menu_edit(void)
{
Efreet_Menu *menu, *entry;
Efreet_Desktop *desktop;
// menu = efreet_menu_get();
menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test.menu");
if (!menu)
{
printf("efreet_menu_get() returned NULL\n");
return 0;
}
#if 0
printf("\n");
efreet_menu_dump(menu, "");
printf("\n");
#endif
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
if (!desktop)
{
efreet_menu_free(menu);
printf("No desktop found.\n");
return 0;
}
efreet_menu_desktop_insert(menu, desktop, 0);
#if 0
printf("\n");
efreet_menu_dump(menu, "");
printf("\n");
#endif
entry = eina_list_data_get(menu->entries);
if (desktop != entry->desktop)
{
efreet_menu_free(menu);
return 0;
}
efreet_menu_desktop_insert(menu, desktop, 2);
#if 0
printf("\n");
efreet_menu_dump(menu, "");
printf("\n");
#endif
entry = eina_list_nth(menu->entries, 2);
if (desktop != entry->desktop)
{
efreet_menu_free(menu);
return 0;
}
efreet_menu_desktop_insert(menu, desktop, -1);
#if 0
printf("\n");
efreet_menu_dump(menu, "");
printf("\n");
#endif
entry = eina_list_data_get(eina_list_last(menu->entries));
if (desktop != entry->desktop)
{
efreet_menu_free(menu);
return 0;
}
efreet_menu_free(menu);
return 1;
}

View File

@ -0,0 +1,58 @@
#include "Efreet.h"
#include "Efreet_Mime.h"
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/time.h>
#include <Ecore.h>
#define THEME "Tango"
#define SIZE 128
int
ef_mime_cb_get(void)
{
const char *mime = NULL, *icon;
int misses = 0, i = 0;
struct
{
char *file;
char *mime;
} files[] = {
{PACKAGE_DATA_DIR"/test/test_type.desktop", "application/x-desktop"},
{PACKAGE_DATA_DIR"/test/entry.png", "image/png"},
{PACKAGE_DATA_DIR"/test/entry", "image/png"},
{PACKAGE_DATA_DIR"/test/sub", "inode/directory"},
{NULL, NULL}
};
double start;
if (!efreet_mime_init())
{
printf("Could not init efreet\n");
return 1;
}
for (i = 0; files[i].file; ++i)
{
mime = efreet_mime_type_get(files[i].file);
if (!mime)
{
printf("Got %s as null instead of %s\n", files[i].file, files[i].mime);
misses ++;
}
else if (strcmp(mime, files[i].mime))
{
printf("Got %s as %s instead of %s\n", files[i].file, mime, files[i].mime);
misses ++;
}
start = ecore_time_get();
icon = efreet_mime_type_icon_get(files[i].mime, THEME, SIZE);
printf("mime icon: %s %s %f\n", files[i].mime, icon, ecore_time_get() - start);
}
efreet_mime_shutdown();
return !misses;
}

View File

@ -0,0 +1,11 @@
#ifndef EF_TEST
#define EF_TEST
#include "config.h"
#include <eina_types.h>
#define IF_FREE(x) do { if (x) free(x); x = NULL; } while (0);
#define NEW(x, c) calloc(c, sizeof(x))
#endif

View File

@ -0,0 +1,29 @@
#include "Efreet.h"
#include "efreet_private.h"
#include <stdio.h>
int
ef_cb_utils(void)
{
Efreet_Desktop *desktop;
const char *tmp2;
printf("\n");
tmp2 = efreet_util_path_to_file_id("/usr/share/applications/this/tmp/test.desktop");
if (tmp2) printf("%s\n", tmp2);
desktop = efreet_util_desktop_file_id_find("kde-kresources.desktop");
printf("kde-kresources.desktop: %p\n", desktop);
efreet_desktop_free(desktop);
desktop = efreet_util_desktop_file_id_find("mplayer.desktop");
printf("mplayer.desktop: %p\n", desktop);
efreet_desktop_free(desktop);
desktop = efreet_util_desktop_file_id_find("nautilus-computer.desktop");
printf("nautilus-computer.desktop: %p\n", desktop);
efreet_desktop_free(desktop);
return 1;
}

View File

@ -0,0 +1,134 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <limits.h>
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <Eina.h>
#include <Eet.h>
#include <Ecore.h>
#include <Ecore_File.h>
#include "Efreet.h"
#include "efreet_private.h"
#include "efreet_cache_private.h"
static Eet_Data_Descriptor *edd = NULL;
int verbose = 0;
static void
dump(Efreet_Icon_Theme *theme, Eet_File *ef)
{
Efreet_Cache_Icons *cache;
Eina_Iterator *it;
const char *key;
unsigned int count = 0;
double start, avg;
start = ecore_time_get();
printf("open: %s\n", theme->name.internal);
cache = eet_data_read(ef, edd, theme->name.internal);
printf("read: %s %f\n", theme->name.internal, ecore_time_get() - start);
if (!cache || !cache->icons) return ;
it = eina_hash_iterator_key_new(cache->icons);
EINA_ITERATOR_FOREACH(it, key)
{
Efreet_Cache_Icon *icon;
unsigned int i;
icon = eina_hash_find(cache->icons, key);
for (i = 0; i < icon->icons_count; ++i)
count += icon->icons[i]->paths_count;
}
eina_iterator_free(it);
efreet_hash_free(cache->icons, EINA_FREE_CB(efreet_cache_icon_free));
free(cache);
start = ecore_time_get() - start;
avg = start / count;
printf("read: %s - %u paths (time: %f) (avg %f)\n", theme->name.internal, count, start, avg);
}
int
main(int argc, char **argv)
{
Eet_File *icons_ef;
Eet_File *theme_ef;
Eina_List *l = NULL;
Efreet_Icon_Theme *theme;
int i;
efreet_cache_update = 0;
if (!efreet_init()) return -1;
theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ);
if (!theme_ef) return -1;
edd = efreet_icons_edd(EINA_FALSE);
if (!edd) return -1;
if (argc > 1)
{
for (i = 1; i < argc; i++)
{
theme = eet_data_read(theme_ef, efreet_icon_theme_edd(), argv[i]);
if (theme) l = eina_list_append(l, theme);
}
}
else
{
char **keys;
int num;
keys = eet_list(theme_ef, "*", &num);
if (keys)
{
for (i = 0; i < num; i++)
{
theme = eet_data_read(theme_ef, efreet_icon_theme_edd(), keys[i]);
if (theme) l = eina_list_append(l, theme);
}
free(keys);
}
}
icons_ef = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ);
if (!icons_ef) return -1;
EINA_LIST_FREE(l, theme)
{
void *data;
dump(theme, icons_ef);
/* free theme */
eina_list_free(theme->paths);
eina_list_free(theme->inherits);
EINA_LIST_FREE(theme->directories, data)
free(data);
free(theme);
}
eet_close(icons_ef);
efreet_shutdown();
return 0;
}

View File

@ -0,0 +1,57 @@
#include <Efreet.h>
#include <stdio.h>
#include <limits.h>
#include "ef_test.h"
static void dump(Efreet_Menu *menu, const char *path);
int
main(int argc __UNUSED__, char **argv __UNUSED__)
{
Efreet_Menu *menu;
if (!efreet_init())
{
fprintf(stderr, "Failed to init Efreet\n");
return 1;
}
menu = efreet_menu_get();
if (!menu)
{
fprintf(stderr, "Failed to read menu\n");
return 1;
}
dump(menu, "");
efreet_menu_free(menu);
efreet_shutdown();
return 0;
}
static void
dump(Efreet_Menu *menu, const char *path)
{
Efreet_Menu *entry;
Eina_List *l;
if (!menu || !menu->entries) return;
EINA_LIST_FOREACH(menu->entries, l, entry)
{
if (entry->type == EFREET_MENU_ENTRY_DESKTOP)
{
if (!path || !*path) path = "/";
printf("%s\t%s\t%s\n", path, entry->id,
entry->desktop->orig_path);
}
else if (entry->type == EFREET_MENU_ENTRY_MENU)
{
char new_path[PATH_MAX];
snprintf(new_path, sizeof(new_path), "%s%s/", path, entry->name);
dump(entry, new_path);
}
}
}

View File

@ -0,0 +1,103 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include <Efreet.h>
#include "efreet_suite.h"
typedef struct _Efreet_Test_Case Efreet_Test_Case;
struct _Efreet_Test_Case
{
const char *test_case;
void (*build)(TCase *tc);
};
static const Efreet_Test_Case etc[] = {
{ "Efreet", efreet_test_efreet },
{ "Efreet Cache", efreet_test_efreet_cache },
{ NULL, NULL }
};
static void
_list_tests(void)
{
const Efreet_Test_Case *itr;
itr = etc;
fputs("Available Test Cases:\n", stderr);
for (; itr->test_case; itr++)
fprintf(stderr, "\t%s\n", itr->test_case);
}
static Eina_Bool
_use_test(int argc, const char **argv, const char *test_case)
{
if (argc < 1)
return 1;
for (; argc > 0; argc--, argv++)
if (strcmp(test_case, *argv) == 0)
return 1;
return 0;
}
static Suite *
efreet_suite_build(int argc, const char **argv)
{
TCase *tc;
Suite *s;
int i;
s = suite_create("Efreet");
for (i = 0; etc[i].test_case; ++i)
{
if (!_use_test(argc, argv, etc[i].test_case)) continue;
tc = tcase_create(etc[i].test_case);
etc[i].build(tc);
suite_add_tcase(s, tc);
tcase_set_timeout(tc, 0);
}
return s;
}
int
main(int argc, char **argv)
{
Suite *s;
SRunner *sr;
int i, failed_count;
for (i = 1; i < argc; i++)
if ((strcmp(argv[i], "-h") == 0) ||
(strcmp(argv[i], "--help") == 0))
{
fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n",
argv[0]);
_list_tests();
return 0;
}
else if ((strcmp(argv[i], "-l") == 0) ||
(strcmp(argv[i], "--list") == 0))
{
_list_tests();
return 0;
}
s = efreet_suite_build(argc - 1, (const char **)argv + 1);
sr = srunner_create(s);
srunner_run_all(sr, CK_NORMAL);
failed_count = srunner_ntests_failed(sr);
srunner_free(sr);
return (failed_count == 0) ? 0 : 255;
}

View File

@ -0,0 +1,10 @@
#ifndef _EFREET_SUITE_H
#define _EFREET_SUITE_H
#include <check.h>
void efreet_test_efreet(TCase *tc);
void efreet_test_efreet_cache(TCase *tc);
#endif /* _EFREET_SUITE_H */

View File

@ -0,0 +1,25 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Efreet.h>
#include "efreet_suite.h"
START_TEST(efreet_test_efreet_init)
{
int ret;
ret = efreet_init();
fail_if(ret != 1);
ret = efreet_shutdown();
fail_if(ret != 0);
}
END_TEST
void efreet_test_efreet(TCase *tc)
{
tcase_add_test(tc, efreet_test_efreet_init);
}

View File

@ -0,0 +1,25 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <Efreet.h>
#include "efreet_suite.h"
START_TEST(efreet_test_efreet_cache_init)
{
int ret;
ret = efreet_init();
fail_if(ret != 1);
ret = efreet_shutdown();
fail_if(ret != 0);
}
END_TEST
void efreet_test_efreet_cache(TCase *tc)
{
tcase_add_test(tc, efreet_test_efreet_cache_init);
}

View File

@ -0,0 +1,180 @@
#include "Efreet.h"
#include "Efreet_Mime.h"
#include <Ecore.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int ef_cb_efreet_data_home(void);
int ef_cb_efreet_config_home(void);
int ef_cb_efreet_cache_home(void);
int ef_cb_efreet_data_dirs(void);
int ef_cb_efreet_config_dirs(void);
int ef_cb_efreet_icon_theme(void);
int ef_cb_efreet_icon_theme_list(void);
int ef_cb_efreet_icon_match(void);
int ef_cb_ini_parse(void);
int ef_cb_ini_long_line(void);
int ef_cb_ini_garbage(void);
#if DEFAULT_VISIBILITY
int ef_cb_locale(void);
#endif
int ef_cb_desktop_parse(void);
int ef_cb_desktop_save(void);
int ef_cb_desktop_command_get(void);
int ef_cb_desktop_type_parse(void);
#if 0
int ef_cb_desktop_file_id(void);
#endif
int ef_cb_menu_get(void);
int ef_cb_menu_with_slashes(void);
int ef_cb_menu_save(void);
#if 0
int ef_cb_menu_edit(void);
#endif
int ef_cb_utils(void);
int ef_mime_cb_get(void);
typedef struct Efreet_Test Efreet_Test;
struct Efreet_Test
{
char *name;
int (*cb)(void);
};
static Efreet_Test tests[] = {
{"Data Home", ef_cb_efreet_data_home},
{"Config Home", ef_cb_efreet_config_home},
{"Cache Home", ef_cb_efreet_cache_home},
{"Data Directories", ef_cb_efreet_data_dirs},
{"Config Directories", ef_cb_efreet_config_dirs},
{"Icon Theme Basic", ef_cb_efreet_icon_theme},
{"Icon Theme List", ef_cb_efreet_icon_theme_list},
{"Icon Matching", ef_cb_efreet_icon_match},
{"INI Parsing", ef_cb_ini_parse},
{"INI Long Line Parsing", ef_cb_ini_long_line},
{"INI Garbage Parsing", ef_cb_ini_garbage},
#if DEFAULT_VISIBILITY
{"Locale Parsing", ef_cb_locale},
#endif
{"Desktop Parsing", ef_cb_desktop_parse},
{"Desktop Type Parsing", ef_cb_desktop_type_parse},
{"Desktop Save", ef_cb_desktop_save},
{"Desktop Command", ef_cb_desktop_command_get},
#if 0
{"Desktop File ID", ef_cb_desktop_file_id},
#endif
{"Menu Parsing", ef_cb_menu_get},
{"Menu Incorrect Names", ef_cb_menu_with_slashes},
{"Menu Save", ef_cb_menu_save},
#if 0
{"Menu Edit", ef_cb_menu_edit},
#endif
{"Utils", ef_cb_utils},
{"Mime", ef_mime_cb_get},
{NULL, NULL}
};
extern char **environ;
static Eina_List *environment = NULL;
void
environment_store(void)
{
char *env;
char **e;
EINA_LIST_FREE(environment, env)
free(env);
for (e = environ; *e; e++)
environment = eina_list_append(environment, strdup(*e));
}
void
environment_restore(void)
{
Eina_List *l;
char *e;
if (!environment) return;
clearenv();
EINA_LIST_FOREACH(environment, l, e)
putenv(e);
}
int
main(int argc, char ** argv)
{
int i, passed = 0, num_tests = 0;
Eina_List *run = NULL;
double total;
char *env;
eina_init();
ecore_init();
total = ecore_time_get();
if (argc > 1)
{
for (i = 1; i < argc; i++)
{
if ((!strcmp(argv[i], "-h")) ||
(!strcmp(argv[i], "--help")))
{
for (i = 0; tests[i].name; i++)
{
printf("%s\n", tests[i].name);
}
return 1;
}
run = eina_list_append(run, argv[i]);
}
}
environment_store();
for (i = 0; tests[i].name; i++)
{
int ret;
double start;
/* we've been given specific tests and it isn't in the list */
if (run && !eina_list_search_unsorted(run, EINA_COMPARE_CB(strcasecmp),
tests[i].name))
continue;
if (!efreet_init())
{
printf("Error initializing Efreet\n");
continue;
}
num_tests ++;
printf("%s:\t\t", tests[i].name);
fflush(stdout);
start = ecore_time_get();
ret = tests[i].cb();
printf("%s in %.3f seconds\n", (ret ? "PASSED" : "FAILED"),
ecore_time_get() - start);
passed += ret;
efreet_shutdown();
environment_restore();
}
printf("\n-----------------\n");
clearenv();
EINA_LIST_FREE(environment, env)
free(env);
printf("Passed %d of %d tests.\n", passed, num_tests);
while (run)
run = eina_list_remove_list(run, run);
printf("Total run: %.3f seconds\n", ecore_time_get() - total);
ecore_shutdown();
eina_shutdown();
return 0;
}