diff --git a/accton/flow_test.py b/accton/flow_test.py
index aac6c31..15986b2 100644
--- a/accton/flow_test.py
+++ b/accton/flow_test.py
@@ -229,5 +229,71 @@
         verify_packet(self, pkt, in_port)
         verify_no_other_packets(self)
 
+class L3UcastRout(base_tests.SimpleDataPlane):
+    """
+    P1(vlan1, 192.168.1.1) , port2(vlan2, 19.168.2.1)
+    """
+    def runTest(self):          
+        delete_all_flows(self.controller)
+        delete_all_groups(self.controller)
+    
+        vlan_id=1
+        intf_src_mac=[0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc]
+        dst_mac=[0x00, 0x00, 0x00, 0x22, 0x22, 0x00]
+        dip=0xc0a80001
+        for port in config["port_map"].keys():
+            #add l2 interface group
+            add_one_l2_interface_grouop(self.controller, port, vlan_id=vlan_id, is_tagged=False, send_barrier=False)
+            dst_mac[5]=vlan_id
+            l3_msg=add_l3_unicast_group(self.controller, port, vlanid=vlan_id, id=vlan_id, src_mac=intf_src_mac, dst_mac=dst_mac)
+            #add vlan flow table
+            add_one_vlan_table_flow(self.controller, port, vlan_id, flag=VLAN_TABLE_FLAG_ONLY_BOTH)
+            #add termination flow
+            add_termination_flow(self.controller, port, 0x0800, intf_src_mac, vlan_id)           
+            #add unicast routing flow
+            dst_ip = dip + (vlan_id<<8)           
+            add_unicast_routing_flow(self.controller, 0x0800, dst_ip, l3_msg.group_id)            
+            vlan_id += 1
+        
+        do_barrier(ctrl)  
+        
+        port1=config["port_map"].keys()[0]
+        port2=config["port_map"].keys()[1]
+        #port 1 to port 2        
+        eth_dst = ':'.join(['%02X' % x for x in intf_src_mac])
+        dst_mac[5]=1
+        eth_src=':'.join(['%02X' % x for x in dst_mac])
+
+        parsed_pkt = simple_tcp_packet(pktlen=100, 
+                                       eth_dst=eth_dst,
+                                       eth_src=eth_src,
+                                       ip_src="192.168.1.1",
+                                       ip_dst='192.168.2.1')
+        pkt=str(parsed_pkt)
+        self.dataplane.send(port1, pkt)
+        verify_packet(self, pkt, port2)
+        verify_no_other_packets(self)
+        
+        #port 2 to port 1
+        eth_dst = ':'.join(['%02X' % x for x in intf_src_mac])
+        dst_mac[5]=2
+        eth_src=':'.join(['%02X' % x for x in dst_mac])
+
+        parsed_pkt = simple_tcp_packet(pktlen=100, 
+                                       eth_dst=eth_dst,
+                                       eth_src=eth_src,
+                                       ip_src="192.168.2.1",
+                                       ip_dst='192.168.1.1')
+        pkt=str(parsed_pkt)                                       
+        self.dataplane.send(port2, pkt)
+        #verify_packet(self, pkt, port1)
+        #verify_no_other_packets(self)    
+    
+class L3McastRoute(base_tests.SimpleDataPlane):
+    def runTest(self):          
+        delete_all_flows(self.controller)
+        delete_all_groups(self.controller)
+        
 
 
+    
\ No newline at end of file
