001 package org.apache.tapestry.form; 002 003 import org.apache.tapestry.IBinding; 004 import org.apache.tapestry.IForm; 005 import org.apache.tapestry.IMarkupWriter; 006 import org.apache.tapestry.IRequestCycle; 007 import static org.easymock.EasyMock.expect; 008 import static org.easymock.EasyMock.expectLastCall; 009 import org.testng.annotations.Test; 010 011 @Test 012 public class TestRadio extends BaseFormComponentTestCase 013 { 014 private Radio radio; 015 private RadioGroup group; 016 017 private IMarkupWriter writer; 018 private IRequestCycle cycle; 019 020 public void test_Render_Selected() 021 { 022 setupComponent(0, false); 023 024 replay(); 025 026 radio.render(writer, cycle); 027 028 verify(); 029 030 assertBuffer("<input type=\"radio\" name=\"group\" id=\"group0\" checked=\"checked\" value=\"0\" onclick=\"tapestry.byId('group').onChange(0);\" />"); 031 } 032 033 public void test_Render_Unselected() 034 { 035 setupComponent(1, false); 036 037 replay(); 038 039 radio.render(writer, cycle); 040 041 verify(); 042 043 assertBuffer("<input type=\"radio\" name=\"group\" id=\"group0\" value=\"0\" onclick=\"tapestry.byId('group').onChange(0);\" />"); 044 } 045 046 public void test_Rewind_Selected() 047 { 048 setupComponent(0, true); 049 050 IBinding binding = newMock(IBinding.class); 051 group.setBinding("selected", binding); 052 binding.setObject(0); 053 expectLastCall(); 054 055 replay(); 056 057 radio.render(writer, cycle); 058 059 verify(); 060 } 061 062 public void test_Rewind_Unselected() 063 { 064 setupComponent(1, true); 065 066 replay(); 067 068 radio.render(writer, cycle); 069 070 verify(); 071 } 072 073 private void setupComponent(int selection, boolean rewinding) 074 { 075 group = newInstance(RadioGroup.class); 076 group.setName("group"); 077 group.setClientId("group"); 078 group._rendering = true; 079 group._rewinding = rewinding; 080 group._selection = selection; 081 group._selectedOption = selection; 082 radio = newInstance(Radio.class, 083 "value", 0); 084 085 writer = newBufferWriter(); 086 cycle = newCycle(); 087 IForm form = newMock(IForm.class); 088 MockDelegate delegate = new MockDelegate(); 089 090 expect(cycle.getAttribute(RadioGroup.ATTRIBUTE_NAME)).andReturn(group); 091 expect(cycle.renderStackPush(radio)).andReturn(radio); 092 093 trainGetForm(cycle, form); 094 trainWasPrerendered(form, writer, radio, false); 095 trainGetDelegate(form, delegate); 096 097 //trainGetElementId(form, radio, "id"); 098 trainIsRewinding(form, rewinding); 099 if (!rewinding) 100 { 101 trainIsRewinding(cycle, rewinding); 102 form.setFormFieldUpdating(true); 103 } 104 105 expect(cycle.renderStackPop()).andReturn(radio); 106 } 107 }