\input regression-test.tex
\documentclass{article}
\usepackage{osgstyler}

\DeclareOsgFontPalette{editorial}{
  main = {
    font = {Latin Modern Roman},
    description = {primary serif text face}
  },
  companion = {font = {TeX Gyre Pagella}},
  display = {alias = companion},
  accent = {font = {Latin Modern Sans}},
  mono = {font = {Latin Modern Mono}},
  symbol = {alias = main}
}

\DeclareOsgFontPalette{minimal}{
  main = {font = {Latin Modern Roman}},
  mono = {font = {Latin Modern Mono}}
}

% Alias-cycle protection must resolve to empty rather than hang or
% crash. Resolved before \START so the resulting error message does
% not become part of the diffed log.
\DeclareOsgFontPalette{cyclic}{
  main      = {font = {Latin Modern Roman}},
  companion = {alias = display},
  display   = {alias = companion}
}
\ExplSyntaxOn
\tl_new:N \g_test_cyclic_companion_tl
\OsgFontPaletteResolvedSlotTo{cyclic}{companion}\l_tmpa_tl
\tl_gset:Nx \g_test_cyclic_companion_tl {\l_tmpa_tl}

% unknown-font-slot: resolving a slot name outside the portable set
% must fail cleanly (empty result), not crash. Also triggered before
% \START.
\tl_new:N \g_test_unknown_font_slot_tl
\OsgFontPaletteResolvedSlotTo{editorial}{bogus}\l_tmpa_tl
\tl_gset:Nx \g_test_unknown_font_slot_tl {\l_tmpa_tl}
\ExplSyntaxOff

\begin{document}
\UseOsgFontPalette{editorial}
\START
\ExplSyntaxOn
\OsgFontPaletteResolvedSlotTo{editorial}{main}\l_tmpa_tl
\TYPE{editorial-main=\l_tmpa_tl}
\OsgFontPaletteResolvedSlotTo{editorial}{display}\l_tmpa_tl
\TYPE{editorial-display=\l_tmpa_tl}
\OsgFontPaletteResolvedSlotTo{editorial}{symbol}\l_tmpa_tl
\TYPE{editorial-symbol=\l_tmpa_tl}
\OsgFontPaletteResolvedSlotTo{minimal}{companion}\l_tmpa_tl
\TYPE{minimal-companion=\l_tmpa_tl}
\OsgFontPaletteResolvedSlotTo{minimal}{display}\l_tmpa_tl
\TYPE{minimal-display=\l_tmpa_tl}
\OsgFontPaletteResolvedSlotTo{minimal}{accent}\l_tmpa_tl
\TYPE{minimal-accent=\l_tmpa_tl}
\TYPE{cyclic-companion-empty=\tl_if_empty:NTF\g_test_cyclic_companion_tl{yes}{no}}
\TYPE{unknown-font-slot-empty=\tl_if_empty:NTF\g_test_unknown_font_slot_tl{yes}{no}}
\ExplSyntaxOff
\TYPE{font=\OsgFontPaletteValue{editorial}{companion}{font}}
\TYPE{description=\OsgFontPaletteValue{editorial}{main}{description}}
\TYPE{active=\OsgActiveFontPalette}
\makeatletter
{\UseOsgFont{main}\TYPE{main-family=\f@family}}
{\UseOsgFont{display}\TYPE{display-family=\f@family}}
{\UseOsgFont{symbol}\TYPE{symbol-family=\f@family}}
\makeatother
\END
\end{document}
