}
public void testPlaceholderEnd_missingPlaceholderStart() throws Exception {
// with preceeding text
compile("<gxp:msg>foo <gxp:eph/></gxp:msg>");
assertAlert(new EphMissingPhError(pos(2, 14), "<gxp:eph>"));
assertNoUnexpectedAlerts();
// without preceeding text
compile("<gxp:msg><gxp:eph/></gxp:msg>");
assertAlert(new EphMissingPhError(pos(2, 10), "<gxp:eph>"));
assertNoUnexpectedAlerts();
// with preceeding ph/eph pair
compile("<gxp:msg>",
"<gxp:ph name='foo' example='bar'/><gxp:eval expr='1'/><gxp:eph/>",
"<gxp:eph/>",
"</gxp:msg>");
assertAlert(new EphMissingPhError(pos(4, 1), "<gxp:eph>"));
assertNoUnexpectedAlerts();
}