This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.lang.reflect.Constructor; | |
import java.lang.reflect.InvocationHandler; | |
import java.lang.reflect.Method; | |
import java.lang.reflect.Proxy; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
import java.util.Objects; | |
import javax.annotation.Nonnull; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun launchBrowser(context: Context, uri: Uri?) { | |
val browserIntent = Intent(Intent.ACTION_VIEW).apply { data = uri } | |
val browseActivities = context.packageManager.queryIntentActivities(browserIntent, PackageManager.MATCH_DEFAULT_ONLY) | |
for (info in browseActivities) { | |
if (info.activityInfo.packageName != context.packageName) { | |
browserIntent.setPackage(info.activityInfo.packageName) | |
try { | |
context.startActivity(browserIntent) | |
break | |
} catch (e: ActivityNotFoundException) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class AssertFailsWith { | |
public interface RunnableThatThrows { | |
void run() throws Throwable; | |
} | |
public static <T extends Throwable> void assertFailsWith(Class<T> throwableClass, RunnableThatThrows runnable) { | |
try { | |
runnable.run(); | |
fail(); | |
} catch (Throwable throwable) { | |
assertTrue(throwableClass.isInstance(throwable)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.icu.text.CompactDecimalFormat; | |
import androidx.test.runner.AndroidJUnit4; | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import java.util.Locale; | |
import static org.junit.Assert.assertEquals; | |
@RunWith(AndroidJUnit4.class) | |
public class CompactDecimalFormatTest { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Moves moving_id after reference_id by finding the next row after | |
reference_id and setting moving_id.sort to be the midpoint of | |
reference_id.sort and next_reference_id.sort | |
*/ | |
UPDATE subscription | |
SET sort = ( | |
CASE WHEN ( | |
/* | |
Get the first sort value after the reference_id |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<opml version="1.0"> | |
<head> | |
<title>Heath's C, Java, Apple, and Android feeds</title> | |
</head> | |
<body> | |
<outline text="C" title="C"> | |
<outline type="rss" text="zeuxcg.org" title="zeuxcg.org" xmlUrl="http://zeuxcg.org/feed/" htmlUrl="http://zeuxcg.org"/> | |
<outline type="rss" text="Krister Walfridsson’s blog" title="Krister Walfridsson’s blog" xmlUrl="http://kristerw.blogspot.com/feeds/posts/default" htmlUrl="https://kristerw.blogspot.com/"/> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open class D {} | |
class D1: D() {} | |
fun D.foo() { | |
println("D.foo") | |
} | |
// this seems like an override, but isn't | |
// It's good that the compiler doesn't let | |
// me add `override`, but it's still not clear |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "MyNonClusteredClass.h" | |
@interface GenericIsKindOfClass<ObjectType : MyNonClusteredClass *> : NSObject | |
+ (instancetype _Nonnull)new NS_UNAVAILABLE; | |
- (instancetype _Nonnull)init NS_UNAVAILABLE; | |
- (instancetype _Nonnull)initWithInstanceOfObjectType:(ObjectType _Nonnull)instanceOfObjectType NS_DESIGNATED_INITIALIZER; | |
- (ObjectType _Nullable)typeSafeDowncastOrNil:(NSObject * _Nonnull)object; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void badPrintExample(Example * _Nonnull example) { | |
[example switchFoo:^(ExampleBar * _Nonnull bar_) { | |
// ^ | |
// error: incompatible block pointer types sending 'void (^)(ExampleBar * _Nonnull __strong)' to parameter of type 'void (^ _Nonnull)(ExampleFoo * _Nonnull __strong)' | |
NSLog(@"Bar: %@, %@", @(bar_.b), @(bar_.c)); | |
} | |
bar:^(ExampleFoo * _Nonnull foo_) { | |
// ^ | |
// error: incompatible block pointer types sending 'void (^)(ExampleFoo * _Nonnull __strong)' to parameter of type 'void (^ _Nonnull)(ExampleBar * _Nonnull __strong)' | |
NSLog(@"Foo: %@, %@", foo_.f, foo_.g); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (void)testWrongValues { | |
Example * _Nonnull fooExample = [[ExampleFoo alloc] initWithB:2 c:3]; | |
// ^ | |
// error: no visible @interface for 'ExampleFoo' declares the selector 'initWithB:c:' | |
Example * _Nonnull barExample = [[ExampleBar alloc] initWithF:@"foo" g:@"goo"]; | |
// ^ | |
// error: no visible @interface for 'ExampleBar' declares the selector 'initWithF:g:' | |
} |
NewerOlder