Your code looks fine. Just ensure that locationManager is retained/strongly-held.
Test your region code using the iPhone simulator. On the 'debug' menu chose a location from the 'location' submenu. Changing different locations will exercise your code.
I just tested your code using the iPhone Simulator and by choosing locations from the submenu. I entered your code's lat/long numbers for 'custom location'. Here was the output:
2013-05-15 07:42:50.885 Location[69277:c07] {(
(identifier home) <+37.26917400,-119.30660700> radius 100.00m
)}
2013-05-15 07:42:50.932 Location[69277:c07] Started monitoring TEST region
2013-05-15 07:44:01.103 Location[69277:c07] Entered Region - TEST
2013-05-15 07:44:59.573 Location[69277:c07] Entered Region - TEST
The 'entered region' output occurred when I chose the 'custom location'. The only changes I made from your code were: 1) commented out the 'mapView' lines and 2) declared the ViewController interface as shown below. You had used a class extension.
@interface ViewController : UIViewController
<CLLocationManagerDelegate>
{
CLLocationManager *locationManager;
CLRegion *testRegion;
}
@end
Ensure that location services are enabled for your app.