test: improve tests and fmt all
This commit is contained in:
parent
73702f6049
commit
b7c9865412
2 changed files with 47 additions and 29 deletions
|
|
@ -3,48 +3,42 @@ use freedesktop_icons::lookup;
|
||||||
use gtk4::{IconLookupFlags, IconTheme, TextDirection};
|
use gtk4::{IconLookupFlags, IconTheme, TextDirection};
|
||||||
|
|
||||||
pub fn simple_bench(c: &mut Criterion) {
|
pub fn simple_bench(c: &mut Criterion) {
|
||||||
c.bench_function("firefox lookup", |b| b.iter(||
|
c.bench_function("firefox lookup", |b| {
|
||||||
lookup("firefox")
|
b.iter(|| lookup("firefox").with_theme("Papirus").with_cache().find())
|
||||||
.with_theme("Papirus")
|
});
|
||||||
.with_cache()
|
|
||||||
.find()
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn bench_lookups(c: &mut Criterion) {
|
pub fn bench_lookups(c: &mut Criterion) {
|
||||||
let mut group = c.benchmark_group("ComparisonsLookups");
|
let mut group = c.benchmark_group("ComparisonsLookups");
|
||||||
|
|
||||||
let args = [
|
let args = [
|
||||||
"user-home", // (Best case) An icon that can be found in the current theme
|
"user-home", // (Best case) An icon that can be found in the current theme
|
||||||
"video-single-display-symbolic", // An icon that can be found in the parent theme
|
"video-single-display-symbolic", // An icon that can be found in the parent theme
|
||||||
"firefox", // An icon that can be found in the hicolor default theme
|
"firefox", // An icon that can be found in the hicolor default theme
|
||||||
"archlinux-logo", // An icon that resides in /usr/share/pixmap
|
"archlinux-logo", // An icon that resides in /usr/share/pixmap
|
||||||
"not-found", // (Worst case) An icon that does not exist
|
"not-found", // (Worst case) An icon that does not exist
|
||||||
];
|
];
|
||||||
|
|
||||||
for arg in args {
|
for arg in args {
|
||||||
group.bench_with_input(BenchmarkId::new("freedesktop-icons lookup", arg), arg, |b, arg| {
|
group.bench_with_input(
|
||||||
b.iter(|| lookup(arg)
|
BenchmarkId::new("freedesktop-icons lookup", arg),
|
||||||
.with_theme("Arc")
|
arg,
|
||||||
.find());
|
|b, arg| {
|
||||||
});
|
b.iter(|| lookup(arg).with_theme("Arc").find());
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
group.bench_with_input(BenchmarkId::new("lookup with cache", arg), arg, |b, arg| {
|
group.bench_with_input(BenchmarkId::new("lookup with cache", arg), arg, |b, arg| {
|
||||||
b.iter(|| lookup(arg)
|
b.iter(|| lookup(arg).with_theme("Arc").with_cache().find());
|
||||||
.with_theme("Arc")
|
|
||||||
.with_cache()
|
|
||||||
.find());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
group.bench_with_input(BenchmarkId::new("lookup linicon", arg), arg, |b, arg| {
|
group.bench_with_input(BenchmarkId::new("lookup linicon", arg), arg, |b, arg| {
|
||||||
b.iter(|| linicon::lookup_icon(arg)
|
b.iter(|| linicon::lookup_icon(arg).from_theme("Arc").next());
|
||||||
.from_theme("Arc")
|
|
||||||
.next());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
group.bench_with_input(BenchmarkId::new("lookup gtk", arg), arg, |b, arg| {
|
group.bench_with_input(BenchmarkId::new("lookup gtk", arg), arg, |b, arg| {
|
||||||
gtk4::init().unwrap();
|
gtk4::init().unwrap();
|
||||||
let theme = IconTheme::new();
|
let theme = IconTheme::new();
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
theme.lookup_icon(
|
theme.lookup_icon(
|
||||||
arg,
|
arg,
|
||||||
|
|
|
||||||
32
src/lib.rs
32
src/lib.rs
|
|
@ -256,7 +256,27 @@ mod test {
|
||||||
#[test]
|
#[test]
|
||||||
fn simple_lookup() {
|
fn simple_lookup() {
|
||||||
let firefox = lookup("firefox").find();
|
let firefox = lookup("firefox").find();
|
||||||
assert_that!(firefox).is_some();
|
|
||||||
|
asserting!("Lookup with no parameters should return an existing icon")
|
||||||
|
.that(&firefox)
|
||||||
|
.is_some()
|
||||||
|
.is_equal_to(PathBuf::from(
|
||||||
|
"/usr/share/icons/hicolor/22x22/apps/firefox.png",
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_fallback() {
|
||||||
|
let icon = lookup("video-single-display-symbolic")
|
||||||
|
.with_theme("Arc")
|
||||||
|
.find();
|
||||||
|
|
||||||
|
asserting!("Lookup for an icon in the Arc theme should find the icon in its parent")
|
||||||
|
.that(&icon)
|
||||||
|
.is_some()
|
||||||
|
.is_equal_to(PathBuf::from(
|
||||||
|
"/usr/share/icons/Adwaita/scalable/devices/video-single-display-symbolic.svg",
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -273,18 +293,22 @@ mod test {
|
||||||
.with_theme("Papirus")
|
.with_theme("Papirus")
|
||||||
.find();
|
.find();
|
||||||
|
|
||||||
assert_that!(wireshark).is_some().is_equal_to(lin_wireshark)
|
asserting!("Given the same input parameter, lookup should ouput be the same as linincon")
|
||||||
|
.that(&wireshark)
|
||||||
|
.is_some()
|
||||||
|
.is_equal_to(lin_wireshark);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn compare_to_linicon_in_pixmap() {
|
fn should_fallback_to_pixmaps_utlimately() {
|
||||||
let archlinux_logo = lookup("archlinux-logo")
|
let archlinux_logo = lookup("archlinux-logo")
|
||||||
.with_size(16)
|
.with_size(16)
|
||||||
.with_scale(1)
|
.with_scale(1)
|
||||||
.with_theme("Papirus")
|
.with_theme("Papirus")
|
||||||
.find();
|
.find();
|
||||||
|
|
||||||
assert_that!(archlinux_logo)
|
asserting!("When lookup fail in theme, icon should be found in '/usr/share/pixmaps'")
|
||||||
|
.that(&archlinux_logo)
|
||||||
.is_some()
|
.is_some()
|
||||||
.is_equal_to(PathBuf::from("/usr/share/pixmaps/archlinux-logo.png"));
|
.is_equal_to(PathBuf::from("/usr/share/pixmaps/archlinux-logo.png"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue